- ベストアンサー
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を付加するというのは、 どういった動作を意味するのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
execの引数は実行可能ファイルです。 実行可能ファイルでない(xビットが付与されていない)スクリプトファイルは(当たり前ですが)実行できませんので, シェル本体を実行して,シェルの引数としてシェルスクリプトを与えます。
その他の回答 (2)
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
exec というのは、確かに引数に指定されたものを実行するものですが ただ、/bin/sh ...と記述するのとは違う点は 現在実行中のもののプロセスIDや環境をすべて引き継ぐ点にあります。 例えば・・・おっしゃられたスクリプトが PID=123で実行されていた場合 /bin/sh $startup であれば /bin/shのPID=125とか新たに割り当てられる exec /bin/sh $start であれば /bin/shのPID=123と継承される(ps とかからは見れませんが) となります。
お礼
そんな細かい話があったんですね。 ありがとうございました。
- PCFREAK
- ベストアンサー率51% (417/805)
実行可能ならばshellスクリプトは単独で動かす事が出来ますが、実行可能でない場合はshellスクリプトファイルをshに読ませて実行する、という事です。 結局、違いはないです。 xパーミッションが付いてる場合も付いていない場合も、とにかく$startupを実行する、という考慮ですね。
お礼
どちらにしろ、実行することになるということで、納得しました。微妙な違いですね。ありがとうございました。
お礼
なるほど、ファイルの中身をよみこませるような感じですね。