/usr/bin/env python3って何?

前提知識

スクリプトの最初の行の#!で始まるものはshebangと呼ばれる。

スクリプトを書いて、実行するときにシステムによってこの行が読まれ、この実行ファイルで当該スクリプトを実行する機能がLinux系のOSにはある。

pythonで実験

以下のファイルを作成 hello.py

実行してみる

python3を明示式に指定して実行すればちゃんと実行できるが、そうでない場合はbashとして実行されている事がわかる。

ここでshebangを加えてみる。

実行

ちゃんと実行できる。

pythonの特殊解釈

しかしpythonのスクリプトではshebangが/usr/bin/python3ではなく、/usr/bin/env python3と記述されている。

/usr/bin/envは引数を起動するだけのプログラムでオプションで環境変数を変更する機能がある。Linuxがこのshebangを読むと/usr/bin/env python3が起動してenvはをPATHなどから探してpython3を実行するものと思われる。

python3ではWindowsとの互換性のために/usr/bin/envがvirtual commandと解され、PATHからpython.exeを見つけるようになるのだと思う。

Windowsの場合は、python.exeの他にpy.exeがシステムディレクトリにインストールされているので、まずpy.exeがスクリプトのshebangを見て適切なpython実行ファイルを探して実行するものと思われる。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)