Ich arbeite an einigen bash
Shell-Skripten für ein lokales Anmeldeskript und es funktioniert gut auf Leopard und Snow Leopard, schlägt aber auf Lion fehl. Ich war neugierig, ob es einen Ort gibt, der die Unterschiede zu bash
Lion auflistet?
Innerhalb von bash zeigt der Befehl echo $BASH_VERSION
die Version von bash an. Sie können dann nachschlagen, was sich in der Changelog- Datei geändert hat, die in Bashs Fall heißt CHANGES
. (Es gibt ein vollständigeres Änderungsprotokoll in den Quellen, aber es ist hauptsächlich für Leute von Interesse, die bash schreiben und warten.)
Wenn Ihre Computer auf dem neuesten Stand sind, wird auf ihnen dieselbe Version ausgeführt . Stellen Sie sicher, dass alle im Skript verwendeten externen Programme ebenfalls auf dem neuesten Stand sind: Das Skript kann sich anders verhalten, da eines dieser Programme eine andere Ausgabe erzeugt.
Sie können genauer beobachten, was Ihr Skript tut, indem Sie ausführen bash -x /path/to/script
. Die -x
Option veranlasst bash, für jeden ausgeführten Befehl eine Ablaufverfolgung auszugeben. Sie können auch set -x
ein Skript einfügen, um die Ablaufverfolgung ein- und set +x
auszuschalten.
bash --version
wird Ihnen das gleiche Ergebnis wie echo $BASH_VERSION
btw geben. +1 fürbash -x script
Unter der Annahme einer SnowLeopard- oder Lion-Installation mit den neuesten Software-Updates ist die Version von Bash dieselbe. 3.2.48(1)-release
.
Auf SnowLeopard haben Sie in einigen Fällen möglicherweise eine 32-Bit-Kompilierung, während es auf Lion (standardmäßig) 64-Bit ist.
username="$(whoami)"
Es ist äußerst unwahrscheinlich, dass der Befehl jemals seine Ausgabe auf Bash ändert, da dies den sich schnell bewegenden, Gehirn verschlingenden Zorn einer unendlichen Anzahl von ausgehungerten Zombie-Systemadministratortypen hervorrufen würde.
(Übrigens sind Sysadmins fast nie untot, trotz des gelegentlichen Anscheins des Gegenteils. Die Beschreibung wurde aus dramatischen Gründen hinzugefügt, und es war nicht beabsichtigt, Sysadmins zu beleidigen. Ich entschuldige mich aufrichtig bei allen tatsächlich untoten Sysadmins und ihren Familien und Ich fordere sie auf, sich sofort eine Schrotflinte zu schnappen und die Schlafzimmertür zu verbarrikadieren, doppeltippen, um sicherzugehen.)
Macaco
John
John
Okodo
u="$(whoami)"; echo $u
mit 10.6 und 10.7 versucht, mit dem gleichen Ergebnis. Posten Sie die Skriptquelle, auf diese Weise erhalten Sie anständige Antworten. Um Ihre Hauptfrage zu beantworten, werden die neuesten System-Upgrades für 10.7 und 10.6 sowieso dieselbe Version von Bash haben, dh.3.2.48(1)-release