Shellshock
が世間を賑わせてますが、
Macでは依然としてデフォルトの/bin/bash
及び/bin/sh
についてはオフィシャルなアップデートがありませんが、
Homebrewで配られているbashはすぐにアップデートされました。
ただ、そのアップデートを行った後に少しおかしくなったのでそれについて。
bashを使おうとするとエラーが出る
何故かターミナルとかで開くとbash自体は立ち上がるのですが、
その後bash
を使おうとすると次の様なエラーが出ます。
dyld: Library not loaded: @@HOMEBREW_PREFIX@@/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/bash
Reason: image not found
これはサブシェルでbashを立ち上げたりするときにも出るので、 bashをシェバンで指定している様な物は全てダメな感じ。
一番面倒なのはbrew
コマンド自体がこのエラーで使えなくなること。
これはどうも問題になってるreadline
をインストールしなおせば良い、
とのこと1。
確かにreadlineをHomebrewでインストールしてあったのでそれを
再インストールしようとしましたが、Bashのままでは上のエラーが出て
brew
コマンド自体出来ない状態。
仕方がないので、zshを一度起動してzshからbrewコマンドを実行しました。
$ zsh
% brew reinstall readline
% brew reinstall bash
一応bashも再インストール。
ここで、readline
の再インストール時に、
Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
みたいなエラーが。Xcodeが1ヶ月程前にアップデートされてその後起動してなかったので、 その際に必要な承認を行っていなかった模様。
なので、一度Xcodeを起動して最初に出てくるプロンプトでagree
しておいて、
その後上のコマンドを実行します。
bash
の方は一応再インストール。
これで上のエラーが出なくなりました。
ちょっと良くわかってないのはbrew
コマンド自体は
#!/bin/sh
というシェバンの設定になっていて、
どのbashからでもzshからでも同じ様に思いますが、
上のエラーがどの時点で出てるのかがちょっと理解不足。