Bash 3.2(OS Xに同梱されているバージョン)は、「シェルショック」(CVE-2014-6271およびCVE-2014-7169)として知られるリモート実行エクスプロイトに対して脆弱です。公式のAppleパッチ?
更新:Appleが公式パッチをリリースしたことに注意してください。詳細は以下をご覧ください。
Bash 3.2(OS Xに同梱されているバージョン)は、「シェルショック」(CVE-2014-6271およびCVE-2014-7169)として知られるリモート実行エクスプロイトに対して脆弱です。公式のAppleパッチ?
更新:Appleが公式パッチをリリースしたことに注意してください。詳細は以下をご覧ください。
回答:
Appleは、Shellshockおよび関連する脆弱性に対するBashセキュリティ修正を「OS X bash Update 1.0」としてリリースしました。OS X Mountain Lion v10.8.5またはOS X Mavericks v10.9.5(Security Update 2014-005に含まれています)を使用しているユーザー向けの通常のシステムアップデートでインストールできます。また、手動でインストールすることもできます。公式のAppleの修正プログラムは、OS X Lion v10.7.5およびOS X Lion Server v10.7.5でも利用できますが、これらは手動ダウンロードでのみ入手できます。セキュリティ修正プログラムは、オペレーティングシステムのバージョンに基づいて異なるURLから入手できます。
(新しいパッチがリリースされた場合、ここにそれらを入れますが、これらの既存のパッチも参照用に保管してください。)
Appleパッチは、Shellshockおよびその他のいくつかの脆弱性を処理し、ほとんどの人にとっては問題ありません。tl; dr人はここで読むのをやめることができます。
ただし、Shellshockバグによってbashに注目が集まったため、多くの研究者がbashを厳重に調査し、ますます(悪用しにくい)脆弱性が発見され続けています。セキュリティを非常に心配している場合(OS X Serverを実行して公開されているWebサイトをホストしている可能性があるため)、自分でbashをコンパイルすることにより、脆弱性とパッチが追いついてくるのを追いかけることができます。それ以外の場合は、心配しないでください。
Appleが別のアップデートをリリースして、将来、さらなる脆弱性の発見に落ち着くときにbashすることを期待してください。
bash 3.2用のbash自体のパッチの公式セット、パッチ52、53、および54(Bash 4.3パッチ25、26、および27に対応)が利用可能であり、CVE-2014-6271とCVE-2014-7169の両方を修正します。下に表示される「ゲームオーバー」も同様です。これは私(@alblue)によってテストされ、それに応じて投稿が更新されました(そして、追加の更新が行われました:パッチ54で停止する投稿についてはリビジョン41を参照してください)。
bashに対する多くの追加の脆弱性が報告されています。Michal Zalewskiの投稿によると、パッチ54(およびおそらくAppleの公式パッチ)がある場合、「これらのバグはセキュリティリスクを引き起こさないはずなので、これらの個々のバグのステータスに執着する意味はありません。」
CVE-2014-6271-ステファンが発見した元のRCE。他のバージョンのbash43-025および対応する9月24日のエントリによって修正されました。
CVE-2014-7169-ファイル作成/トークン消費のバグがTavisによって発見されました。bash43-026およびcoにより修正(9月26日)
CVE-2014-7186-フロリアンとトッドによって発見された、おそらく何もリスクのない10以上のhere-docクラッシュ。bash43-028&co(10月1日)で修正。
CVE-2014-7187-フロリアンによって発見された、クラッシュしない、おそらく秒リスクなしのオフバイワン。bash43-028&co(10月1日)で修正。
CVE-2014-6277-初期化されていないメモリの問題、ほぼ確実にMichal Zalewskiが発見したRCE。特定のパッチはまだありません。
CVE-2014-6278-Michal Zalewskiが発見したコマンドインジェクションRCE。特定のパッチはまだありません。
かなり混乱します。幸いなことに、公式のbashメンテナーであるChet Rameyは、パッチマッピングにCVEを投稿しました。彼の投稿はbash 4.3のパッチに言及していますが、私(@OldPro)はそれらをOS Xに適用可能なbash 3.2のパッチに翻訳しました。また、この投稿以来、彼はパッチ57をリリースしました。
bash32-052 CVE-2014-6271 2014-09-24
bash32-053 CVE-2014-7169 2014-09-26
bash32-054 exported function namespace change 2014-09-27 ("Game Over")
bash32-055 CVE-2014-7186/CVE-2014-7187 2014-10-01
bash32-056 CVE-2014-6277 2014-10-02
bash32-057 CVE-2014-6278 2014-10-05
タイムラインと詳細については、David A. Wheelerの投稿を参照してください。
@alblueは、パッチ55を通じてビルド手順を投稿しました。I(@OldPro)は、手順にパッチ56および57を追加しましたが、テストしていません。
次のテストを実行することにより、CVE-2014-6271の元の問題に対して脆弱かどうかを判断できます。
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
上記の出力は、脆弱性のないbash
バージョンの例です。vulnerable
そのコマンドの出力に単語が表示されている場合bash
は脆弱であり、更新する必要があります。以下は、OS X 10.8.5の脆弱なバージョンです。
元の投稿に更新があり、Bash 3.2.52(1)は、CVE-2014-7169で定義された脆弱性のバリエーションに対して依然として脆弱です。
$ rm -f echo
$ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Thu 25 Sep 2014 08:50:18 BST
上記の出力は、脆弱なbash
バージョンの例です。そのコマンドの出力に日付が表示される場合、bash
脆弱です。
研究者は、脆弱性として分類せずに、スクリプトが自動インポート関数を使用してサブシェルの関数をハイジャックする可能性があることに注意しました。
$ env ls="() { echo 'Game Over'; }" bash -c ls
Game over
影響を受けるシステム上の上記のコードは、Game Over
予想されるディレクトリ一覧の代わりに表示されls
ます。明らかに、echo 'Game Over'
あなたが望むどんな邪悪なコードでも置き換えることができます。これは「ゲームオーバー」バグとして知られるようになりました。
パッチ54が利用可能になる前は、NetBSDとFreeBSDの両方がデフォルトで自動インポートbash機能を無効にしており、一部は「ゲームオーバー」を防ぐためでしたが、主にパーサーにさらなるエラー(CVE-2014-7169など)を含めるためです発見され続け、新しいコマンドラインフラグを追加しました--import-functions
古いデフォルトの動作を再度有効にします。私(@alblue)は、他の人がこの動作を採用したい場合に使用するパッチ(3.2.53に対する)を準備し、それを以下に含めました。デフォルトでは、このパッチは以下のビルドスクリプトで有効になっていません。私(@OldPro)は、このパッチはもはや必要ではないか、良いアイデアだと考えています。下位互換性を壊し、それが保護する脆弱性はパッチ54以前のパッチで非常によく対処され、この非公式パッチを有効にすると将来のパッチが適用されないためです。
(質問編集者への注意。これは非公式のパッチであるため、デフォルトでは有効にしないでください。)
a0c5c4d66742fddd0a35001cb91798a5fbf8a2f5 import_functions.patch
パッチを有効export ADD_IMPORT_FUNCTIONS_PATCH=YES
にするには、ビルドを実行する前に実行します。このパッチを有効にすると、パッチ54および将来のパッチが無効になることに注意してください。将来のパッチは非公式のパッチとの互換性を保証できないためです。
Twitterの@ake_____が指摘したように、公式のAppleパッチは実行可能ファイルの環境破壊に対して依然として脆弱です。
$ env '__BASH_FUNC<ls>()'="() { echo Game Over; }" bash -c ls
Game Over
ユーザーは、これがどれほど重要かを自分で決める必要があります。私(@OldPro)は、一般的に非特権リモート攻撃者は環境変数の名前を設定できず、特権を持つ攻撃者はできないため、この動作に対する既知のエクスプロイトがないため、心配する必要はないと思います(CVE識別子も与えられていませんでした)これを使用して、まだ持っていない特権を取得します(少なくとも追加の脆弱性を利用しない限り)。
背景を少し説明するために、bashでは関数を定義でき、さらにコマンドを使用してそれらの関数をサブシェルにエクスポートできますexport -f
。これは、関数定義に値が設定された関数と同じ名前の環境変数を作成することで実装されていました。そう
$ ls () { echo 'Game Over'; }
$ export -f ls
$ echo $ls
Game Over
これは、export -f ls
という名前の環境変数を作成したために発生しましたls
。「ゲームオーバー」の脆弱性は、最初に関数を定義することなく、この環境変数を直接作成できることでした。つまり、正しい変数名を注入できれば、コマンドをハイジャックできます。Appleは、正しい名前の変数を作成するのを難しくすることで、これを修正しようとしました。公式のbashパッチ54 %
は、変数名に許可されていない文字を含む変数名を使用して、正しい名前の変数を作成することを実際に不可能にし、エクスポートされた関数定義を別の予約済み名前空間に効果的に配置します。
上記のいずれにも意味がない場合は、心配しないでください。今のところAppleのパッチは問題ありません。
OS X 10.9.5(現時点で最新の安定版リリース)は、Bash v3.2.51に同梱されています。
$ bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
Xcodeがインストールされている(およびライセンスを受け入れる前に少なくとも1回実行している)場合、次のようにBash を取得して再コンパイルできますxcodebuild
。
$ # If you want to disable auto-imported functions, uncomment the following
$ # export ADD_IMPORT_FUNCTIONS_PATCH=YES
$ mkdir bash-fix
$ cd bash-fix
$ curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
$ cd bash-92/bash-3.2
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0
$ # See note above about ADD_IMPORT_FUNCTIONS_PATCH
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] && curl http://alblue.bandlem.com/import_functions.patch | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-054 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-055 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-056 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-057 | patch -p0
$ cd ..
$ # Note: DO NOT ADD SUDO TO XCODEBUILD HERE
$ xcodebuild
$ build/Release/bash --version # GNU bash, version 3.2.57-release
$ build/Release/sh --version # GNU bash, version 3.2.57-release
$ sudo cp /bin/bash /bin/bash.old
$ sudo cp /bin/sh /bin/sh.old
$ sudo cp build/Release/bash /bin
$ sudo cp build/Release/sh /bin
(注:上記のコードブロックをコピーして貼り付け、ターミナルに移動して実行することでこれを実行できますpbpaste | cut -c 2- | sh
。ただし、インターネットからランダムスクリプトを実行するときは常に注意してください...)
この後、Bashバージョンはv3.2.57になります。
$ bash --version
GNU bash, version 3.2.57-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
セキュリティのため、およびテスト後chmod -x
、古いバージョンを再利用しないように、またはバックアップサイトに移動するために古いバージョンを使用することをお勧めします。
$ sudo chmod a-x /bin/bash.old /bin/sh.old
他の回答には、MacPortsまたはHomebrewを使用している人向けのソリューションがあります。これらは問題を解決しません。Bashの追加バージョンをインストールするだけです。これらを具体的にアップグレードする場合は、それらの回答を参照してください。
bashを管理し、これらのパッチを提供してくれたChetに感謝します。これについてコメントし、時間の経過とともに改善してくれたすべての人に感謝します。
Appleは実際の修正をリリースしましたが、これはまだ有用かもしれません。ただし、Lion以降の修正プログラムのみをリリースし、公式パッチはGNU bashバージョン3.2.53(1)-release(x86_64-apple-darwin13)を提供するため、ゲームオーバーバグは依然として多少脆弱です。この時点で、3.2.57に対するBashの独自バージョンの再構築は、間違って行わない限り、おそらくAppleのパッチに依存するよりも安全です。
これにより、両方の脆弱性(CVE-2014-6271およびCVE-2014-7169)とその後に発見されたいくつかの脆弱性にパッチを当てたbashバージョン4.3.28(1)が得られます。これは、Macports bashを使用してバージョン4の機能を取得するようにシェルを変更した場合に役立ちます。
持っている#!/bin/sh
か#!/bin/bash
最初の行としての標準OSスクリプトの問題は解決しません。この種の問題は、Macportsがより速く更新される傾向があるため、MacportsがAppleが提供するプログラムのバージョンを使用しないようにしようとする理由です。たとえば、bashの新しいバージョンがあります。
Homebrewの回答のように端末にこれを使用させることができます
MacPortsのは、続くインストールするには、以下の手順です
。1.インストールXcodeとのXcodeコマンドラインツール
2.ターミナルでXcodeのライセンスに同意します。sudoは-license xcodebuild
OS Xのバージョンに3.ダウンロードのMacPortsのPKGを:リンクがページ上にある
4。 pkgを実行します
macportsがインストールされている場合、最新バージョンを使用する必要があります。これは、
sudo port selfupdate
再コンパイルまたは最新のバイナリを入手するには
sudo port upgrade outdated
bash
通常、OS Xに由来するすべての場所の修正をリストする必要があります。システム修正、Homebrew、MacPorts修正です。おそらくFinkも。これが@AlBlueの回答の編集として作成された場合、個人的にそれを好むでしょう。だから、それはすべて1つ、最も正しい答えです。
公式のApple OS X bashアップデート1.0に関する注記:このソフトウェアアップデートは、公式のApple bashバージョン3.2.53のみをもたらします。3.2.54パッチリビジョンは、次の変更を提供します。
このパッチは、bashがエクスポートされた関数に使用するエンコーディングを変更し、シェル変数との衝突を回避し、環境変数の内容のみに依存してシェル関数として解釈するかどうかを判断しないようにします。
すでにシステムに3.2.54バイナリをパッチしているユーザーの場合、コンパイル済みのバイナリをAppleパッチに置き換えるか、そのままにしておくことができますが、これはお勧めしません。Appleは3.2.53でバイナリバージョンを残しましたが、Appleのパッチには以下のエクスプロイトテストの修正が含まれています。
env X='() { (a)=>\' sh -c "echo date"; cat echo
つまり、Appleの公式3.2.53バイナリには、バニラGNU 3.2.54バイナリと同等のセキュリティが含まれています。不幸な混乱のポイントですが、それはそれです。Appleの修正は中途半端ではありません。これは問題の完全な修正のようです。そのため、バニラのコンパイルbash
とsh
GNUソースからの以下のロードマップは、歴史的な成果物と見なされ、必要に応じて将来パッチを行う方法のテンプレートとして参照される可能性があります。
注:GNUのバニラソースにsh
は、Adobe Flashなどのさまざまなインストーラーでエラーを引き起こす特権の昇格の問題があります。Appleがパッチを当てたバイナリを使用することを強くお勧めします。このパッチスキームは非推奨であり、賢明ではないと考えてください。
次の修正を説明する新しいGNU bash 3.2.55パッチがあります。
バグの説明:
parse.yには2つのローカルバッファオーバーフローがあり、単一のコマンドまたはネストされたループに添付された多くのヒアドキュメントを指定すると、シェルがコアをダンプする可能性があります。
公式のAppleパッチを適用したバイナリを使用するか、新しい可能性のあるエクスプロイトに対処するために独自のバイナリを使用するかを判断するのは、読者の皆さんにお任せします。個人的には、Appleのバイナリに固執します。
この投稿は、コンパイルとバニラをインストールする方法を詳しく説明bash
し、sh
OS X上で私は正しいパッチリビジョンで私を残していなかったアップル固有のソースを使用して詳細例を次のようにこのルートを選びました。YMMV。ただし、このバニラのインストールは、OS Xバイナリを置き換えることを目的としているため、Appleが最終的にセキュリティ更新プログラムをリリースすると、これらのバニラの置き換えは適切なAppleの対応製品によって奪われます。
私の基本構成は次のとおりです。
すべてのコマンドラインユーティリティがインストールされたOS X Lion 10.7.5およびXcode 4.6.3。
これを修正する手順は次のとおりです。
3.2.48のベースbashソースコードを次からダウンロードします。
https://ftp.gnu.org/gnu/bash/bash-3.2.48.tar.gz
以下からbash3.2.49、.50、.51、.52、.53、.54、および.55パッチをダウンロードします。
https://ftp.gnu.org/gnu/bash/bash-3.2-patches/
これらを$ filename.patch、たとえばbash3.2.50.patchとして保存しました。
ダウンロードディレクトリにCDを挿入して…
メインソースブランチを展開します。
tar xzvf bash-3.2.48.tar.gz
cd bash-3.2.48
以前に説明したように、ダウンロードしたパッチファイルの名前を変更したと仮定すると、
cp ../*.patch .
それから…
for file in *.patch ; do
patch -p0 < $file
done
これにより、さまざまなファイルの正常なパッチが表示されます。そうでない場合は、調査と調査を行う準備をしてください。
次:
sudo cp /bin/bash /bin/bash_old
sudo cp /bin/sh /bin/sh_old
sudo chmod -x /bin/bash_old
sudo chmod -x /bin/sh_old
これは基本的に、古い脆弱なbashおよびshシェルをバックアップし、それらの実行可能特権を削除しました。これにより、必要に応じてコマンドを復元できるようになりますが、その間にダメージを与える機能は削除されます。
次:
./configure --prefix=/ ; make ; sudo make install
これにより、新しいbashバイナリが/ binに正しく構成、コンパイル、インストールされるはずです。完了したら、ターミナルを終了して再度開きます。
幸福と笑顔のすべてが、bash --version
3.2.55を見ることができるようになるはずです。
Gaia:Downloads trane$ bash --version
GNU bash, version 3.2.55(1)-release (i386-apple-darwin11.4.2)
Copyright (C) 2007 Free Software Foundation, Inc.
上記のコマンドの正確な出力は、OS Xのバージョンによって異なります。
また、脆弱性をテストして、問題bash
がないことがわかるはずです。
注:これまでbashを修正しただけですが、/bin/sh
実行可能ファイルはまだ脆弱な状態です。単にコピーbash
の上には、sh
物事のLinuxのスタイルです。ただし、OS Xのsh
実装にはからいくつかの違いがあるbash
ため、コンパイラをもう一度ドラッグしてください。OS X での方法bash
とsh
相違点の詳細については、こちらをご覧ください。
https://apple.stackexchange.com/a/89327/91441
ダウンロードディレクトリで以下を実行します。
make clean
お気に入りのエディターで、ファイルMakefile.in
を開いて99行目までスクロールします。プログラム行を変更して、出力するバイナリsh
が次のbash
ようになるようにします。
Program = sh$(EXEEXT)
保存してから
./configure --prefix=/ --enable-xpg-echo-default --enable-strict-posix-default
make ; sudo make install
これでsh
、Appleとほぼ同じようにビルドできます。
最後の注意点:一部の(すべて?)システムでは、Appleは通常、bashbug
実行可能ファイルをに配置するよう/usr/bin
です。私たちのコンパイルはそれをに入れ/bin
ます。したがって、ここでの最終ステップ:
sudo mv /usr/bin/bashbug /usr/bin/bashbug_old
sudo chmod -x /usr/bin/bashbug_old
sudo mv /bin/bashbug /usr/bin/bashbug
READLINE_LIB = /usr/local/lib/libreadline.a
クリーンコンパイルを設定して実行します。その後、ストリップの上に新しいbashのバイナリをコピー/bin/bash
して/bin/sh
HISTORY_LIB = /usr/local/lib/libhistory.a
ます。それ以外の場合、bashはlibhistoryの/ usr / localバージョンに動的にリンクされます。
bash
、カーネルが異なるだけで、バニラがどこかでそれ自体の動作に失敗する場所はわかりません。いずれにせよ、私は自分の解決策は一時的なものだと考えています。結局、にコンパイルするための私の主な理由である(Appleが問題にパッチを適用するの周りになりますし、私のコンパイルされたバイナリが置き換えられます/bin
最初の場所で。
ソースからのコンパイルに苦労している人のために、9月29日の時点で、AppleはMac OS X 10.9.5、10.8.5および10.7.5のパッチを公式にリリースしました。
まず、この脆弱性にbashとshをパッチすると、Macの一部のスクリプトが破損する可能性があります。Macから直接パブリックインターネットにWebサービスを提供しているのでない限り、これを実際に行う必要はありません。したがって、本当に必要ない場合は、Appleから公式のセキュリティ更新プログラムが提供されるまで待ちます。
警告がありますが、ここでは、Mavericks 10.9でBrewを使用してこの更新を行う方法に関するいくつかの手順を示します。
最初に、古いbashを使用していることを確認します。
$ which bash
/bin/bash
$ /bin/bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
最新のbashは4.3.25です
Xcodeがインストールされていない場合は、Xcodeコマンドラインツールが必要です。
$ xcode-select --install
または開発者ポータルから。
Brew(http://brew.sh)をインストールするには:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
それから:
$ brew doctor
問題がある場合は、指示に従ってください。ここでは、多くの一般的な問題に対処しています。
次に、brewをパッケージの最新リストに更新します。
$ brew update
最新のbash 4.3.25を取得するには:
$ brew install bash
これにより、bashがインストールされます /usr/local/Cellar/bash/4.3.25/bin/bash
昔bash
とsh
今でもはに存在する/bin
ので、インストール後には、新しいファイルに古い実行ファイルの名前を変更します。
$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old
あなたが非常に妄想的である場合、あなたは上の実行権限を削除することができます bash_old
$ sudo chmod a-x /bin/bash_old /bin/sh_old
次に、brewがインストールされた新しいbash 4.3.25へのシンボリックリンクを作成します。
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh
再起動すると完了です。
警告—これは、bash 3.2に依存する既存のシェルスクリプトや、Mac sh
がlinuxで持っている違いに影響する可能性のある既存のシェルスクリプトを破壊する可能性がありsh
ます。同じスレッドの@TraneFranksによる回答から、ソースからのbashとshを置き換えるためのはるかに洗練された回答があります。
/bin/bash
あり/bin/sh
、Brewの最新のbashにアップグレードするよりも問題が少ない可能性があります。
@AlBlueの投稿は非常に完成しています。ただし、私のOS X 10.6.8サーバーでは、彼の修正は機能しません。Appleには10.6.8の修正はなく、@ AlBlueで説明されている手順はXcode 3.2.6(Snow Leopardの最新バージョン)では機能しません。私はエラーを受け取ります:
** BUILD FAILED **
The following build commands failed:
sh:
CodeSign /Users/bas/bash-fix/bash-92/build/Release/sh
bash:
CodeSign /Users/bas/bash-fix/bash-92/build/Release/bash
(2 failures)
このため、私はbrew.shを使用しています。OS X 10.6.8 Snow Leopardのより良いソリューションがある場合は、あなたの考えをコメントしてください。@Jeromeのコメントも参照してください。彼は@AlBlueのソリューションを使用してOS X 10.6.8 Snow Leopardにパッチを適用しました。とにかく:
まず、次のonelinerを使用してbrewをインストールします。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
更新 brew
brew update
次に、最新バージョンをインストールしてbash
、現在のバージョンを置き換えます。
brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
sudo mv /bin/bash /bin/bash-backup
sudo ln -s /usr/local/bin/bash /bin/bash
Command (complete path)
環境設定(Command,)で
Terminal.app のデフォルトのログインシェル ' 'を設定できます。
注:コメントでは、一部のユーザーはこの方法は適切ではないと考えています。しかし、私にとってこれは、OS X 10.6.8 Snow LeopardでBASHをアップグレードする唯一の包括的な方法です。
sh
ていません-あなたもそれを行う必要があります。/bin/sh
!= /bin/bash
。/bin/sh
システムコマンドを実行すると、多くのツールが実行されます。system()
たとえば、Rubyの呼び出し/bin/sh
は、文字列内で展開する必要があるシェル展開文字がある場合に使用します。Homebrewを使用してシステムバイナリIMOを更新し、負けゲームをプレイしています。システムバイナリの適切な更新bash
に加えて、Homebrewを更新する必要があります。
xcodebuild
ますか?もしそうなら、私はそれを経験しませんでした。複数のbashビルドがあるかどうかを確認し、クリーンアップ(ブリューアンインストール)を検討し、場合によってはxcodeを再インストールします。その後、パッチプロセスを新たに開始します。
こちらの手順に従ってください:https : //github.com/tjluoma/bash-fix基本的に、ターミナルで次の操作を行います。
curl -s https://raw.githubusercontent.com/tjluoma/bash-fix/master/bash-fix.sh | zsh -f