• ベストアンサー

シェルスクリプトのパス

#!/bin/bash と #!/bin/sh はどのように使い分けるんですか? http://www.ep.sci.hokudai.ac.jp/~inex/y2003/1031/script.html

質問者が選んだベストアンサー

  • ベストアンサー
  • HOGERA23
  • ベストアンサー率28% (2/7)
回答No.1

別に使い分けなくても、常に #!/bin/bash で良いと思います。 sh にできて bash にできないことって無いでしょうから。 あえて使い分けるとしたら、 bash固有の機能を使いたいときは bash、 そうじゃなければ sh ってかんじでしょうか。 例えば、./hoge/piyo/ ってディレクトリがあって、 この下に foo、bar2つのディレクトリを新しく掘りたいとき sh だったら mkdir ./hoge/piyo/foo ./hoge/piyo/bar ってしなきゃいけないけど bash では mkdir ./hoge/piyo/{foo,bar} でOKとか。

sdvs
質問者

補足

上に書いた http://www.ep.sci.hokudai.ac.jp/~inex/y2003/1031/script.html では、最初に #!/bin/bash date echo "I am $USER." echo 'My login shell is ' | tr -d '\012' grep ^$USER: /etc/passwd | cut -d: -f 7 echo "Hey !!" 書かれています。 このソースではbash固有の機能は使われていますか? なぜそのサイトでは使い分けているか分かりませんか?

その他の回答 (1)

  • HOGERA3
  • ベストアンサー率35% (50/139)
回答No.2

回答に対する補足No.1に対する回答です。 bash 固有の機能らしき部分は、 grep ^$USER: は sh だと grep "^$USER:" としないといけない(たぶん)ってぐらいでしょうか。 (""を省略していいなんてはじめて知った) 使い分けの理由は ---------- $ bash sample とすると... ---------- とbashを例に挙げたから #!/bin/bash にしたんじゃないでしょうか。 これが ---------- $ sh sample とすると... ---------- ってなってたら、ここも #!/bin/sh にしてたと思います。

sdvs
質問者

お礼

サイトの説明の流れに沿って変更されたようですね。 ありがとうございました。