lisz-works

プログラミングと興味を貴方に

シバン書くといいことあるの?#!/bin/bashとかの話

【スポンサーリンク】

Linuxペンギン

こんにちは、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!;donecat 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と同義となります。

スクリプトファイルに対して実行ファイルを実行するかのように使用できるということですね。