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
Man kann auf dem Mac das package coreutils installieren, welches den Befehl
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
Hier mein Beispielcode:
Der Ansatz mit
Oder ist mein Ansatz vielleicht allgemein unpraktikabel und es geht anders sinnvoller?
Danke schonmal :-)
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 :-)