ファイルの先頭行にある #! って何

in #japanese2 months ago

こんにちは、@yasuです。

たまに見かけるファイルの1行目にある#! について調べてみました。

調べると言っても、図書館に行くわけでもなく、Googleに#!と入力するだけです^^

シバンというらしい。

シバンとは

シバンまたはシェバン (英: shebang) とはUNIXのスクリプトの #! から始まる1行目のこと。起動してスクリプトを読み込むインタプリタを指定する。ハッシュ・バンまたはシェル・バン、シャープ・バンとも言うが、これらを縮めたシェバンという呼び方が一般的かつ簡素である[1]。
https://ja.wikipedia.org/wiki/シバン_(Unix)
出典: フリー百科事典『ウィキペディア(Wikipedia)』

複数バージョンのインタプリタ環境がある場合には、そのバージョンも指定できるようです。

左側のShellでmain.pyファイルを実行してみます。UNIXなので拡張子は関係ないとのこと。

とりあえず、実行してみると、

Permisshin Deniedとなります。

実行する権限がないためです。

ファイルに実行権限を付加します。

chmod +x main.py

image.png

1行目をpythonからPHPに変更してみると、

出力結果が変わりました。

pythonではなく、phpとして実行されたようです。

#!/usr/bin/env php

image.png

UNIXは、ファイルの拡張子ではなく、

ファイルの1行目を判断していることが実感できました。

参考記事
https://gammasoft.jp/python/python-shebang/