たいていどのOSも「ls -l /bin/sh」は「/bin/sh -> bash」になってる
mac OSだと「ls -l /bin/sh」すると「/bin/sh」が返ってきて稀にmac OSにはshが入ってると勘違いする人も居るんだけど「/bin/sh --version」するとGNU bashが返ってくる
なんで/bin/shと/bin/bashがあるの?と思うかも知れないけど/bin/shは「bash --posix」というPOSIX互換モードを取る。/bin/bashはPOSIX互換モードじゃない
ちなみにDebian系Linuxディストーションで「ls -l /bin/sh」すると「/bin/sh -> dash」が返ってくる。コイツはBashじゃなくてDashなので注意だ
DashはPOSIX互換モードを備えつつBashよりも機能が抑えられていてコンパクトかつ高速という特徴がある
@taskumalpha 都合と歴史ですね
BashはPOSIX互換モードを持つのでshがプリインストールされている必要がなくなったんです
しかしBash登場以降、若いユーザはshとBashは同じものと捉えてしまったという技術的敗北の歴史があります
シェルスクリプトは元々遅いですけど、shで済むはずの処理がBashの全機能を引くと更に遅くなるんですよw
そこでDebian系は「Bash遅いしDashにしようぜ」ってことになりました「まさか/bin/sh引いてるのにBash固有コマンドを書いちゃうヤツなんて居ないよね?w」と
もちろんシェルスクリプトの互換性はガタガタになり、shとBashは違うんだよということを多くの若いユーザは強制的に学ばされることとなったのですw
@keizou あ〜もう、そこら辺ウィキペディアに書いて欲しい。