[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:106108] Re: #!で始まるスクリプト


こんばんは、鈴木@埼玉県(在住)です。

MANページを'#!'で検索して読んでいたため
見落としましたが、
  このファイルが実行可能フォーマットで
  ないために実行が失敗し、かつディレクトリ
  でもない場合には、このファイルはシェル
  スクリプト(shell script)であると見なされます。
とbashのMANページにありました。

'#! 〜〜'が第1行目のファイルは、execve()システム
コールで処理され実行が成功するようになって
いますので、シェルにシェルスクリプトと認識される
段階には至らず、シェルが '#! 〜〜'を処理することは
ないようですね。

お騒がせしました。

ところで、スクリプトが、 errno に ELIBBAD をセット
して -1 を返して終了すると、スクリプトはファイルが
実行可能状態でなかったと認識し、スクリプトファイル
として処理するステップに進むのでしょうか?

On Sat, Jan 07, 2006 at 09:06:47PM +0900, SUZUKI Yasuhiro wrote:
> こんばんは。鈴木@埼玉県(在住)です。
> 
> しらいさんが試したのは、
> On Sat, Jan 07, 2006 at 06:35:47PM +0900, Takashi SHIRAI wrote:
>    ...(略)...
> >  shell が自身で「#!」を評価してしまうのを防ぐために、敢えて
> > execve() を使ってますが、...(略)...
> ですので、execve()システムコールでも、'#! 〜〜'で始まる
> スクリプトファイルを実行させることができる、という
> ことですね。
> 
> 出沢さんが[linux-users:106095] で、'#! 〜'の処理は
> シェルからカーネルに移ったというような発言をされて
> いますが、
> # しらいさんの[linux-users:106094] でもそういう
> # 印象を受けます。
> スクリプトファイルをコマンドラインなどで
> 実行する際に、まず初めに処理するのは、
> 相変わらずシェルではないでしょうか?
> # execve()で、スクリプトファイルを直接実行
> # 可能であるとは知りませんでしたが。
    ...(略)...

以上です。

------------------------------------------------------------
鈴木 康弘(SUZUKI Yasuhiro)
  yasu@xxxxxxxxxxx
  http://www31.ocn.ne.jp/~yswww/myself/

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: