Bash command abhängig von Betriebssystem verwenden (Linux/Mac Kompatibilität)

Hörbört

Ensign
Registriert
Dez. 2018
Beiträge
241
Hallo zusammen,

ich habe ein shell Skript geschrieben, das unter Linux einwandfrei funktioniert.
Nun möchte eine andere Person das Skript auch auf einem Mac ausführen, aber bei einem command verschluckt sich das Skript.

Ich habe an einigen Stellen realpath mit dem Argument --relative-to=$PATH verwendet, wobei realpath auf dem Mac keine optionalen Argumente frisst.
Man kann auf dem Mac das package coreutils installieren, welches den Befehl grealpath bereitstellt, das sich so verhält wie realpath unter Linux.

Mein Lösungsansatz würde nun so aussehen, dass ich checke ob das Skript unter Linux oder auf einem Mac ausgeführt wird um dann im Fall des Macs realpath mit grealpath zu ersetzen. Ich dachte ich kann dies mittels alias lösen.

Hier mein Beispielcode:
Bash:
if [ "$(uname)" == "Darwin" ]; then
    echo "Skript läuft auf einem Mac, nutze `grealpath` statt `realpath`"
    alias realpath=grealpath
else if [ "$(uname)" == "Linux" ]; then
    echo "alles bleibt so wie es ist"
fi

# folgend das eigentliche Skript mit etlichen Aufrufen von
SOME_PATH=$(realpath --relative-to=$SOME_OTHER_PATH $PATH)

Der Ansatz mit alias erfüllt leider das Ziel nicht. Gibts für so eine command-Substitution einen anderen Befehl?
Oder ist mein Ansatz vielleicht allgemein unpraktikabel und es geht anders sinnvoller?

Danke schonmal :-)
 
[[[
test_realpath () {
if [ "$(uname)" == "Darwin" ]; then
rpath= grealpath
else if [ "$(uname)" == "Linux" ]; then
rpath= realpath
fi
echo $rpath
}

test_realpath ]]]

Schau dir mal makefiles an und bash skripte. Sowas in die Richtung
 
Du kannst doch den Namen der Anwendung ebenfalls ganz normal in eine Variable packen und beim eigentlichen Aufruf genau so benutzen wie du es mit den Parametern getan hast.
 
  • Gefällt mir
Reaktionen: Hörbört, bluedxca93, BeBur und eine weitere Person
@Raijin Danke für die Antwort, so habe ich es nun gelöst. Manchmal muss man auch auf die offensichtlichen Lösungen gestupst werden :-)
 
  • Gefällt mir
Reaktionen: Raijin
Zurück
Oben