はじめに
- 最近の仕事ではbashスクリプトを書いてdockerコンテナを一括実行するようなことがあった。
- bashスクリプトの一行目のおまじないの
#!/bin/bash
が何なのかが気になったので調べてみた。
シバン (shebang)
-
#!/bin/bash
はshebangと言われるもので、LinuxなどのUNIX系OSで実行されるスクリプトファイルで、実行する処理系(インタプリタ)を指定する仕組み。 - 一行目でインタプリタを指定して、二行目以降の文を引数として渡す。
- bashのみが使えるものでもなく、pythonファイルの先頭に
#!/usr/bin/env python
と記述すればpythonのインタプリタをしていできます。
shebangの使い方
- hello.sh
#!/usr/bin/bash
echo hello!!!
- 実行
❯❯❯ bash hello.sh
hello!!!
shebangがないとどうなるか
- それでは
#!/usr/bin/bash
がないとどうなるか...結果は同じ出力がされた...... - これに関して調べてみると、shebangはなくてもうまくいくことはあるようです。
- ただ、shebangがないと想定外のインタプリタでスクリプトが実行される可能性があるようで、記述はした方が良いとのことです。(ふわっとした結論ですが...)
おわりに
- shebangという名前の由来は「ハッシュorシャープ(#)」と「エクスクラメーションマーク(!) ※バンとも呼ばれる」の組み合わせから“hash-bang” あるいは “sharp-bang” を縮めて “shebang”となったらしい。