こんにちは、lisです!
Linuxのファイルを見ていると、#!/bin/bash
みたいの書かれてるの見たことないですか?
この先頭行にあるやつ「シバン(shebang)」についてです。
シバン書くといいことあるの?
スクリプトの先頭行にシバンを設定することで、指定したファイルを使って実行することができます。
なので「このスクリプトはコイツで実行してね!」と指定することができます。
シバンを変えて実験
例えばrepeatという構文は、zshでは使えますが、bashでは使えません。
# zsh ❯ repeat 3; do echo hoge;done hoge hoge hoge # bash ❯ bash $ repeat 3; do echo hoge; done bash: syntax error near unexpected token `do'
そこでこんなスクリプトを用意します。
❯ cat zsh.sh #!/bin/zsh repeat 3; do echo zsh!;done ❯ cat bash.sh #!/bin/bash repeat 3; do echo bash!;done
内容は同じで、シバンがbashかzshかという違いです。
これをそれぞれ実行してみると……
❯ ./zsh.sh zsh! zsh! zsh! ❯ ./bash.sh ./bash.sh: line 3: syntax error near unexpected token `do' ./bash.sh: line 3: `repeat 3; do echo bash!;done'
zshは成功して、bashはエラーしました。
シバンが使えるのはシェルだけじゃない
シェルだけでなく、pythonスクリプトを実行するインタプリタを指定することもできます。
例えば、test.pyのシバンを#!/usr/bin/python3.8
とした場合、$ ./test.py
と実行することで/usr/bin/python3.8 ./test.py
と同義となります。
スクリプトファイルに対して実行ファイルを実行するかのように使用できるということですね。