2021年10月20日 更新
どうも、クラゲジュニアです。
今回は、シェバンについてです。
書かなくても、動くよね?お祈り?と思う方もいるかもしれません。
しっかり意味があります!!
シェバンは、スクリプトの#!
から始まる1行目のことを指します。
#! /bin/sh
本題に入りましょう。
今回はサンプルとして、以下のようなシェルスクリプトを使用します。
sample.sh
#! /bin/bash
grep 'fuga' < <(cat hoge.txt)
hoge.txt
Hello
World
fuga
ただ単にfuga
が出力されるスクリプトです。
sample.shを作成し上記のコードを追記しシェルスクリプトを起動してみましょう。
想定通りの挙動です。
次はシェバンを消してみましょう。
ファイルの中身は、以下のようになります。
grep 'fuga' < <(cat hoge.txt)
変わらずfugaしてくれます。
シェバンに意味は、あります!!
もう一度シェルスクリプトの中身を以下のように戻してファイル名をsample
にしましょう。
#! /bin/bash
grep 'fuga' < <(cat hoge.txt)
実行権限も与えてください。
chmod +x sample
今度は、bashへの引数ではなくシェルスクリプトそのものを実行してみます。
シェバン付きの場合は実行できます。
シェバンを消してみると・・・・
エラーが発生しました。
これがシェバンが必要な理由です。
シェバンは、スクリプト自体を実行する際にどのプログラムで実行するかを指定します。
今回はbashの記法なのにデフォルトのshで実行されてしまいました。
以上です。