アプリ版:「スタンプのみでお礼する」機能のリリースについて

shスクリプトです。

startup=$HOME/.xsession

if [ -f $startup ]; then
if [ -x $startup ]; then
exec $startup
else
exec /bin/sh $startup ※
fi
fi

※のところなんですが、実行可能でない場合に、
/bin/shを付加するというのは、
どういった動作を意味するのでしょうか?

A 回答 (3件)

execの引数は実行可能ファイルです。


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

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

お礼日時:2005/08/10 11:02

exec というのは、確かに引数に指定されたものを実行するものですが


ただ、/bin/sh ...と記述するのとは違う点は
現在実行中のもののプロセスIDや環境をすべて引き継ぐ点にあります。

例えば・・・おっしゃられたスクリプトが PID=123で実行されていた場合

/bin/sh $startup であれば
/bin/shのPID=125とか新たに割り当てられる

exec /bin/sh $start であれば
/bin/shのPID=123と継承される(ps とかからは見れませんが)

となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/10 11:12

実行可能ならばshellスクリプトは単独で動かす事が出来ますが、実行可能でない場合はshellスクリプトファイルをshに読ませて実行する、という事です。


結局、違いはないです。

xパーミッションが付いてる場合も付いていない場合も、とにかく$startupを実行する、という考慮ですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/10 11:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!