Ist es sicher, Bash über Homebrew zu aktualisieren?

Ich bin neu bei OS X. Ich verwende OS X Lion auf einem MacBook Pro. Ist es sicher, die Bash-Shell mit Homebrew zu aktualisieren:

$ brew install bash

Wenn sicher, wie mache ich es zur Standardinstanz der Shell, die ich über Terminal ausführe?

Danke!

Diese Frage ist plötzlich extrem relevant geworden, siehe Shellshock
Ja. 10 Zeichen

Antworten (4)

Binärdateien in /{,usr/}{,s}bin/sollten normalerweise nicht durch andere Dateien ersetzt werden. Andere Programme erwarten, dass es sich um die Versionen handelt, die mit OS X geliefert wurden, und sie werden durch Betriebssystem-Upgrades ersetzt.

Nach dem Ausführen brew install bashvon können Sie die Standard-Shell sicher ändern, indem Sie:

  • Hinzufügen /usr/local/bin/bashzu/etc/shells
  • Laufen chsh -s /usr/local/bin/bash.

Einstellungen in Terminal oder iTerm 2 müssen normalerweise nicht geändert werden. Beide öffnen standardmäßig neue Fenster mit einer Login-Shell der Standard-Shell.

Die Standard-Shell kann auch in den Systemeinstellungen oder mit dscl geändert werden, aber alle drei Optionen ändern nur /var/db/dslocal/nodes/Default/users/$USER.plist.

Sieht so aus, als hätte es funktioniert, und wenn ich auf Probleme stoße, sollte es einfach sein, ein Rollback durchzuführen! Danke!
wusste nicht, dass die erweiterte Optionsseite dort war. Süss!
Das Bit zum Bearbeiten /etc/shells, um die brew-installierte bash einzuschließen, ist erforderlich. Andernfalls (zumindest auf meinem Rechner) weigert sich Terminal zu starten.
Der dritte Befehl (csh -s) scheint auf Mavericks 10.9.2 nicht mehr erforderlich zu sein.
Ich musste nur, brew install bashdamit das funktioniert. (dh musste nicht ändern /etc/shells)

Ich könnte mich hier irren, aber soweit ich weiß, brewwürde ich eine eigene Instanz von installieren bash, da brew unter funktioniert, /usr/local/binwährend die Systemstandards unter /bin(und /usr/bin) funktionieren.

Über Terminal können Sie Shells mit Ihrem eigenen, benutzerdefinierten Befehl öffnen. Gehen Sie zu Preferences > Startup und wählen Sie Shells open with: Command (complete path) . Geben Sie einfach den Pfad zu Ihrem neuen bashund vuala!

Ich hoffe es hilft!

Übrigens: Sicherung! Beste Beratung in dieser Situation!

Hey, weißt du was, diese Antwort wirkt tatsächlich wie ein Zauber

Bevor Sie irgendetwas tun, sichern Sie Ihre aktuelle Datei (natürlich, aber verdient es immer gesagt zu werden)

sudo cp /bin/bash /bin/bash.3.2.bk

Erstellen Sie dann einen Symlink zu der ausführbaren Bash-Datei, die Homebrew heruntergeladen hat. Ich denke, es wird so in /usr/local/Cellar sein

sudo ln -s /usr/local/Cellar/bash/4.2.10/bin/bash /bin/bash

Jetzt zeigt /bin/bash auf die Datei in Ihrem Verzeichnis usr/local

Der Nachteil einer neuen Bash für die Systemversion ist, dass jedes Update des Betriebssystems Ihre bevorzugte Shell löschen kann. Vermutlich möchte das OP neue Funktionen verwenden, die kaputt gehen könnten, wenn das Betriebssystem eine "neuer als das alte Betriebssystem", aber eine "älter als benutzerdefinierte" Version von Bash installiert. Es ist besser, den Standardpfad zu ändern oder die Benutzer-Shell-Variable zu ändern.
Nun, Sie könnten einfach einen neuen Simlink erstellen, da dies die Version von bash in Ihrem usr/local-Verzeichnis nicht überschreiben würde. aber du hast Recht, Daniels Weg ist wahrscheinlich besser
Ooh - bearbeiten Sie bitte Ihre Antwort, um das an die erste Stelle zu setzen (und behalten Sie die ursprüngliche Idee bei, wenn Sie dies als zweite Alternative bevorzugen - das gefällt mir viel besser und ich würde gerne die Möglichkeit haben, meine Stimme umzukehren :-)
hmm, gut, das habe ich gesagt, aber ich habe es bearbeitet, um zu verdeutlichen, was jeder Schritt ein wenig besser macht. Denke immer noch, dass die am besten bewertete Antwort wahrscheinlich besser ist :)
Dies scheint ein ziemlich gefährlicher Weg zu sein, um die System-Shell zu ändern.
Wieso den? er kann jederzeit rückgängig gemacht werden.
Wenn Sie dies tun, sollten Sie wirklich auf den versionunabhängigen /usr/local/opt/bash/bin/bash statt auf den versionierten Cellar-Pfad verweisen.

Ich denke, es ist sicher, wenn Sie einfach starten

brew install bash

und fügen Sie es dann als Ihre Standard-Shell hinzu

chsh -s /usr/local/bin/bash

da Sie nur Ihren aktuellen Benutzer ändern. Mir ist jedoch aufgefallen, dass mein Standard ~/.profile ist

if [ "/bin/bash" == $BASH ]; then
    source ~/.bashrc
fi

es muss also aktualisiert werden. Ich habe es geändert

if [ "bash" == $(basename $BASH) ]; then
        source ~/.bashrc
fi
Siehe andere Antworten, warum chshallein nicht ausreicht. Außerdem sieht Ihr aktualisiertes .profile-Snippet genauso aus wie das Original
@patrix: Danke, um darauf hinzuweisen, habe ich das zweite Snippet aktualisiert. Es wäre schön, wenn brew install bashkeine weiteren Maßnahmen erforderlich wären. Mit dem aktualisierten Profil, das ich geteilt habe, ist dies nicht der Fall. Ich hoffe, dies kann anderen helfen.