1.03.1基礎
job.shは読み取り可能だが実行権限がない。
内容を新しいBashプロセスでスクリプトとして実行する。
適切なコマンドはどれか。
× 不正解
bash job.shはBash実行ファイルを起動し、job.shを読み取り入力として処理するため、job.sh自体の実行権限は不要である。
詳細解説
誤り
exec job.sh実行可能ファイルとして現在のプロセスを置換しようとし、実行権限も必要になる。
誤り。execは現在のシェルを置換し、job.shを実行形式として起動するため実行権限なしでは目的を満たさない。
誤り
./job.shファイルを直接実行するため実行権限が必要である。
誤り。カーネルへjob.shの直接実行を依頼するため、実行権限がない条件ではpermission deniedとなる。
誤り
. job.sh現在のシェルへ読み込むため、新しいBashプロセスでの実行ではない。
誤り。.でも実行ビットは不要だが、要求された新しいBashではなく現在のシェル状態を変更し得る。
正しい
bash job.shbashがjob.shを入力として読み取るため、ファイル自身の実行ビットを必要としない。
正しい。実行されるプログラムはbashであり、job.shはbashが読むデータなのでread権限があればよい。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); printf 'echo ran\n' >"$tmp/job.sh"; chmod 600 "$tmp/job.sh"; bash "$tmp/job.sh"; rm -rf "$tmp"期待される結果
ran理解のポイント
- bashがscriptを読む
- read権限は必要
- 直接実行はxが必要
確認時の注意
- 確認環境: Bash 5.x / 一時スクリプト
基礎のおさらい
shebang
直接実行では先頭#!がインタプリタを指定できるが、bash fileでは明示したbashが読む。
プロセス分離
子Bashでのcdや未export変数変更は、終了後の親Bashへ影響しない。
問題IDKL-101-446
確認環境Bash 5.x / 一時スクリプト
最終技術確認2026-08-13
誤り・権利侵害を報告