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 :-)