Homebrew経由でBashをアップグレードしても安全ですか?


81

私はOS Xが初めてです。MacBookProでOS X Lionを実行しています。Homebrewを使用してbashシェルをアップグレードしても安全ですか?

$ brew install bash

安全であれば、ターミナルを介して実行するシェルのデフォルトのインスタンスにするにはどうすればよいですか?

ありがとう!


2
この質問は突然、非常に関連するとなっている、2014年シェルショック脆弱性を参照してください
ecnepsnai

はい。10文字
-shrx

回答:


105

/{,usr/}{,s}bin/通常、バイナリは他のファイルに置き換えないでください。他のプログラムでは、それらがOS Xに付属するバージョンであると想定しており、OSアップグレードによって置き換えられます。

を実行した後brew install bash、次の方法でデフォルトのシェルを安全に変更できます。

  • 追加/usr/local/bin/bashします/etc/shells
  • 実行中chsh -s /usr/local/bin/bash

通常、ターミナルまたはiTerm 2の設定を変更する必要はありません。どちらもデフォルトで、デフォルトシェルのログインシェルで新しいウィンドウを開きます。

デフォルトのシェルは、システム環境設定またはdsclでも変更できますが、3つのオプションはすべて変更するだけ/var/db/dslocal/nodes/Default/users/$USER.plistです。


うまくいったようで、問題が発生した場合は簡単にロールバックできます!ありがとう!
ルディ

高度なオプションページがあることを知りませんでした。甘い!
レモンジンジャー

2
/etc/shellsbrew-installed bashを含めるための編集に関するビットが必要です。そうしないと(少なくとも私のマシンでは)ターミナルは起動を拒否します。
ブレンダンジェルウィン

2
3番目のコマンド(csh -s)は、Mavericks 10.9.2では不要になりました。
ブレントファウスト14

2
brew install bashこれが機能するためだけに必要でした。(つまり変更する必要はありませんでした/etc/shells
ダニエル14

4

私はここで間違っているかもしれないが、私の知る限りではbrew、それはの独自のインスタンスのインストールうbash醸造はで動作するので、/usr/local/binシステムのデフォルトはで動作しながら、/bin(と/usr/bin)。

ターミナルについては、独自のカスタムコマンドでシェルを開くことができます。[設定]> [起動]に移動し、[ コマンド(完全なパス)で開くシェル ]を選択します。新しいbashvuala へのパスを入力するだけです!

それが役に立てば幸い!

ところで:バックアップ!この状況での最善のアドバイス!


ねえ、あなたは何を知っていますか、この答えは実際には魅力のように機能し
ます

0

あなたが何かをする前に、現在のファイルをバックアップしてください(もちろんですが、言うまでもありません)

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

次に、Homebrewがダウンロードしたbash実行可能ファイルへのシンボリックリンクを作成します。私はそれが/ usr / local / Cellarにあると思う

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

これで/ bin / bashはusr / localディレクトリ内のファイルを指します


3
システムバージョン用に新しいbashを導入することのマイナス面は、OSの更新によって優先シェルが消去される可能性があることです。おそらくOPは、OSが「古いOSよりも新しい」が「カスタムよりも古い」バージョンのbashをインストールすると壊れる可能性がある新しい機能を使用したいと考えています。デフォルトパスを変更するか、ユーザーシェル変数を変更する方が適切です。
bmike

usr / localディレクトリにあるbashのバージョンを上書きしないため、新しいsimlinkを作成できます。しかし、あなたは正しい、ダニエルの方法はより良いです
lemonginger

Ooh-回答を編集して最初に
記入して

1
うーん、それは/ is /でしたが、各ステップが少し良くなることを明確にするために編集しました。それでも、最高評価の回答の方が良いと思います:)
lemonginger

これは、システムシェルを変更するための非常に危険な方法のようです。
サミュエル・ミケルボウルズ

0

起動するだけで安全だと思います

brew install bash

それをデフォルトのシェルとして追加します

chsh -s /usr/local/bin/bash

現在のユーザーのみを変更しているためです。ただし、デフォルトの〜/ .profile

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

更新する必要があります。に変更しました

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

なぜchsh単独では不十分なのか、他の回答をご覧ください。また、それはあなたの更新の.profileスニペットは、オリジナルのものと同じに見える
nohillsideの

@patrix:指摘してくれたおかげで、2番目のスニペットを更新しました。それbrew install bash以上のアクションを必要としない場合、それはいいでしょう。私が共有した更新されたプロファイルでは、そうではありません。これが他の人の助けになることを願っています。
ジャンルカカサティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.