Ich versuche nur, ein bisschen Bash-Scripting zu lernen. Meine alte Bash-Version:
Bash version 3.2.53(1)-release...
Ich habe meine Bash auf Mac OS X Yosemite mit Homebrew aktualisiert:
brew update
brew install bash
Dann habe ich in den Terminal-Eigenschaften den Standard-Shell-Pfad von /bin/bash
auf geändert /usr/local/bin/bash
(soweit ich weiß, installiert der Homebrew hier die aktualisierte Bash).
Dann habe ich das Ergebnis noch einmal überprüft (und es scheint, als wäre alles gut):
$ echo $BASH_VERSION
Bash version 4.0.33(0)-release...
Aber als ich versuchte, ein einfaches Bash-Skript zu schreiben:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "Welcome $i times"
done
DAS ERGEBNIS IST:
Bash version 3.2.53(1)-release...
Welcome {0..10..2} times
ANSTATT:
Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times
Warum wird die Bash-Version auf die alte Version zurückgesetzt, wenn ich versuche, das Skript in derselben Shell auszuführen? Das macht mich nur verrückt! Bitte jemand erklärt mir, was mein Problem ist)))
sh
ist/bin
.brew
vielleicht hat keinen Symlink machen fürbash
genanntsh
. Mit Ihrem$PATH
Satz richtig, versuchen Sie es wie folgt beginnen:bash script.sh
.#!/usr/bin/env bash
Installiere neue Bash:
Machen Sie dies zur Standard-Shell:
Legen Sie die Umgebung in einem Skript fest:
Verwenden von
env
sucht nach Bash in Ihrem$PATH
und verwendet das erste, auf das es stößt. Sie können sehen, welchebash
davon verwendet werden, indem Sie Folgendes eingebenwhich bash
. Wenn es zu sehen ,/bin/bash
zuerst, müssen Sie Ihre setzen$PATH
in~/.bashrc
und/.bash_profile
.quelle
chsh
, müssen Sie / etc / shells aktualisieren .Wie pjv betonte, sollten Sie wirklich verwenden
in Ihren Skripten überall portabel zu sein. Zum Beispiel, wenn Sie versuchen, Ihr Skript mit auszuführen
es wird auf den meisten Linux-Systemen fehlschlagen.
quelle