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からでも同じ様に思いますが、
上のエラーがどの時点で出てるのかがちょっと理解不足。
