カテゴリー:
Linux
閲覧数:553 配信日:2019-12-02 11:22
シェルスクリプト1行目
「実行時に使用するインタプリタ」を必ず指定する必要がある
shebang
#!で始まる1行目の記述をShebangと呼ぶ
※「"#"を用いた行」はそれ以降コメントアウトとみなされるが、「#!で始まる1行目」はそれとは異なり特別な意味を持つ
一般的には
#!/bin/shと書く
※Unix系の多くの環境で実行可能だから
「/bin/sh」は「bash」のシンボリックリンク
「/bin/sh」を実行する
→「/bin/bash」が実行される
※「/bin/bash」は「bash」シェルの本体ファイル
CentOS7環境で確認してみる
$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 9月 14 2016 /bin/sh -> bash
「/bin/sh」と「/bin/bash」の違い
何れを指定しても「bash」シェルとして実行されるが、
同じ「bash」シェルでも、起動経緯により、挙動は微妙に異なる
挙動の違い
エラー発生した時点で処理が止まるか最後まで進むか、など
sh という名前で bash を起動すると 、 sh の起動動作をできるだけ真似しようとする
$ man bash
sh という名前で bash を起動すると、 bash は古くからある sh の起動動作をできるだけ真似しようとします。また POSIX
標準にもできるだけ従おうとします。