なぜ、このようにそれを実行しているときpython
ファイルを実行するとx
の許可を必要としない:なぜpythonファイルを実行するには実行権限が必要ですか?
python script.py
をしかし、のように実行されていたときにそれがない:それは(読み解釈
./script.py
なぜ、このようにそれを実行しているときpython
ファイルを実行するとx
の許可を必要としない:なぜpythonファイルを実行するには実行権限が必要ですか?
python script.py
をしかし、のように実行されていたときにそれがない:それは(読み解釈
./script.py
python script.py
で実行しているものはPythonプログラムです。次に、パラメーターで指定したスクリプト、つまりscript.py
(基本的にテキストファイル)をロードして実行します。スクリプトファイルは実行ファイルである必要はありません。ここで実行されるのはPythonインタプリタです(Pythonバイナリ自体で、明らかにx
権限が必要です)。
.\script.py
では、スクリプト(同じテキストファイル)をプログラムとして直接実行しようとします。これを行うと、スクリプトコードの最初の行に指定したインタプリタ( "shebang"、例: #!/usr/bin/env python
。 x
権限で設定されていない場合、OSはファイルを "実行"しようとしません(ただし、デフォルトのプログラムで開くこともできます)ので、シバンは気にしません。
ファイル自体を最初の例で実際に実行されるのではなく)。 Pythonアプリケーションは、実行権限が必要です。
2番目の例では、ファイル自体が実行されているため、処理を続けるためにこれらの権限が必要です。
python script.py
というスクリプトを実行すると、実際には一般に/usr/bin/python
にあるPythonインタープリタが呼び出されます(正確な出力はwhich python
になります)。
インタプリタはスクリプトを読み取り、コードを実行します。 実行許可を持つインタプリタです。
./script.py
としてスクリプトを実行すると、スクリプトが直接実行されるため、スクリプトには実行権限が必要です。使用されるインタプリタは、シバンラインで指定されます。
最初の2バイトが#!
であることをカーネルが検出すると、残りの行がインタープリターとして使用され、そのファイルが引数として渡されます。これを行うには、ファイルに実行権限が必要であることに注意してください。前者の場合では、間接的にカーネルが通訳を方法1によって実行するための短期で./script.py
のみ読み取り許可が、後のために、それは学ぶために直接
、それを実行する必要がある必要があるとして、我々は、スクリプトを実行していたんだろう何をしていますこの仕組みの詳細については、Unixのシバンを探してください。https://en.wikipedia.org/wiki/Shebang_%28Unix%29 – xvan