こんばんは、鈴木@埼玉県(在住)です。
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/
Follow-Ups:
- [linux-users:106109] Re: #!で始まるスクリプトTakashi SHIRAI
- [linux-users:106104] Re: #!で始まるスクリプトKazuhiro NISHIYAMA
- [linux-users:106105] Re: #!で始まるスクリプトTakashi SHIRAI
- [linux-users:106106] Re: #!で始まるスクリプトSUZUKI Yasuhiro
- Prev by Subject: [linux-users:106107] Re: #!で始まるスクリプト
- Next by Subject: [linux-users:106109] Re: #!で始まるスクリプト
- Previous by thread: [linux-users:106107] Re: #!で始まるスクリプト
- Next by thread: [linux-users:106109] Re: #!で始まるスクリプト
- Indexes:[Main][Thread]