Ubuntu 14.04を使用しています。今日、驚くべき発見があります。ファイル拡張子なしでpythonファイルを実行できます。
例えば
$ echo " print 'hello' " > z
$ python z
hello
それでは、なぜファイル拡張子が必要なのでしょうか?ファイルが何であるかを意味的に伝える以外に、ファイルに本物の影響を与えますか?
Ubuntu 14.04を使用しています。今日、驚くべき発見があります。ファイル拡張子なしでpythonファイルを実行できます。
例えば
$ echo " print 'hello' " > z
$ python z
hello
それでは、なぜファイル拡張子が必要なのでしょうか?ファイルが何であるかを意味的に伝える以外に、ファイルに本物の影響を与えますか?
回答:
拡張機能について話している場合、LinuxはWindowsと同じように拡張機能を使用しません。実際、Linuxでは拡張機能はまったく意味がなく、ファイル名の一部にすぎません。人々がファイルを認識しやすくするために、それらはまだ多く使用されています。拡張機能が使用されない一般的な状況の1つは、バイナリ実行可能ファイルの使用です(python
代わりに使用できますpython.exe
)。
スクリプトを実行するには2つの方法があります。
シェルからの呼び出し(./scriptname.py
):スクリプトでは、最初の行はの行に沿って何かを言います#!/usr/bin/python
。#!
スクリプトのインタプリタとして、後続のファイルを使用するようにカーネルに指示します。
http://en.wikipedia.org/wiki/Shebang_%28Unix%29から
シバンは、実際には実行可能ファイル内の人間が読み取れるマジックナンバーのインスタンスであり、マジックバイト文字列は0x23 0x21、#!のASCIIの2文字エンコーディングです。このマジックナンバーは、画像ファイルがスクリプトか実行可能バイナリかを決定する関数の「exec」ファミリによって検出されます。シバンが存在すると、指定された実行可能ファイル、通常はスクリプトの言語のインタープリターが実行されます。
引数としてスクリプトを使用してインタープリターを呼び出します(python scriptname
)。これを行う場合、インタープリターを起動し、実行するスクリプトを明示的に指示します。スクリプトは、任意の「拡張子」を持つ任意のファイルにすることができます。
#!/usr/bin/env python
、インストールされている場所に関係なくpythonを見つけることもできます。(Envは常に/ usr / binにあるため、移植性が必要な場合は直接パスではなくそれを使用することをお勧めします)。
python
。