• ベストアンサー

exec /bin/sh ファイル名

shスクリプトです。 startup=$HOME/.xsession if [ -f $startup ]; then if [ -x $startup ]; then exec $startup else exec /bin/sh $startup ※ fi fi ※のところなんですが、実行可能でない場合に、 /bin/shを付加するというのは、 どういった動作を意味するのでしょうか?

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

  • ベストアンサー
回答No.1

execの引数は実行可能ファイルです。 実行可能ファイルでない(xビットが付与されていない)スクリプトファイルは(当たり前ですが)実行できませんので, シェル本体を実行して,シェルの引数としてシェルスクリプトを与えます。

msndance
質問者

お礼

なるほど、ファイルの中身をよみこませるような感じですね。

その他の回答 (2)

回答No.3

exec というのは、確かに引数に指定されたものを実行するものですが ただ、/bin/sh ...と記述するのとは違う点は 現在実行中のもののプロセスIDや環境をすべて引き継ぐ点にあります。 例えば・・・おっしゃられたスクリプトが PID=123で実行されていた場合 /bin/sh $startup であれば /bin/shのPID=125とか新たに割り当てられる exec /bin/sh $start であれば /bin/shのPID=123と継承される(ps とかからは見れませんが) となります。

msndance
質問者

お礼

そんな細かい話があったんですね。 ありがとうございました。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.2

実行可能ならばshellスクリプトは単独で動かす事が出来ますが、実行可能でない場合はshellスクリプトファイルをshに読ませて実行する、という事です。 結局、違いはないです。 xパーミッションが付いてる場合も付いていない場合も、とにかく$startupを実行する、という考慮ですね。

msndance
質問者

お礼

どちらにしろ、実行することになるということで、納得しました。微妙な違いですね。ありがとうございました。

関連するQ&A