1.06.2基礎
実行権を付けたスクリプトを./report.shとして直接起動する。
Bash構文を使うため、先頭行でインタプリタを指定する。
適切な先頭行はどれか。
× 不正解
実行可能スクリプトの先頭に#!/bin/bashを置くと、カーネルは指定されたBashでファイルを実行する。
詳細解説
誤り
#/bin/bash#!ではなく#だけなので通常のコメントとして扱われる。
#だけで始まる行はシェルにとってコメントである。直接実行時にカーネルへBashを指定できない。
誤り
#!/bin/report.shスクリプト自身のようなパスをインタプリタとして指定している。
#!の形式自体はあるが、後ろにはスクリプトを解釈する実行ファイルを指定する。対象スクリプト自身を指定する用途ではない。
誤り
#!bash /bin#!直後には実行するインタプリタのパスを置く。
カーネルが解釈するshebangでは#!直後にインタプリタのパスを置く。bashという相対名と/binを逆順に置けない。
正しい
#!/bin/bash/bin/bashをインタプリタとして指定するshebangである。
#!/bin/bashは絶対パスでBashを指定するshebangである。ファイルへ実行権があれば直接起動時にBashで解釈される。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'f=$(mktemp); printf "#!/bin/bash\nprintf \"%s\\n\" bash-ok\n" >"$f"; chmod +x "$f"; "$f"; rm -f "$f"'期待される結果
bash-ok理解のポイント
- #!は先頭2文字
- 後ろはインタプリタパス
- 直接実行時に使う
確認時の注意
- 確認環境: Linux / GNU Bash 5.2 / 一時ファイル
- Bashの配置が/bin/bashでない環境では対象システムのパスを確認する。
基礎のおさらい
直接実行時
./scriptのように直接起動したとき、カーネルが先頭の#!を解釈してインタプリタを起動する。
明示的なbash起動
bash scriptと実行した場合は指定したbashが読むため、ファイルのshebangや実行ビットに依存しない。
問題IDKL-102-916
確認環境Linux / GNU Bash 5.2 / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告