このpyAES.pyという名前のスクリプトをダウンロードして、Linuxのデスクトップディレクトリ内のフォルダー名コードに入れました。
この例によれば、 http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/
入力すると
./pyAES.py -e testfile.txt -o testfile_encrypted.txt
pyAES.pyファイルを実行する必要があります。しかし、私はこのエラーを得ています、
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
ls -l
コマンドの出力は、
pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct 8 10:44 pyAES.py
これはchmod +x
の後の出力です
pi@raspberrypi ~/Desktop/Codes $ chmod +x pyAES.py pi@raspberrypi ~/Desktop/Codes $
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
pi@raspberrypi ~/Desktop/Codes $
そして、コマンドchmod +x pyAES.py && ./pyAES.py
は次のエラーを出します、
-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
また、/usr/bin
ディレクトリにファイルを移動して実行しました。
pi@raspberrypi /usr/bin $ pyAES.py
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
pi@raspberrypi /usr/bin $
/ usr/binディレクトリにファイルが存在することがわかりますが、そのようなファイルやディレクトリはありませんというエラーが表示されます。
Linux端末がpythonスクリプトを実行していない理由を教えてください。
あなたはひどく書かれたシバンラインを持っているようです。あなたが得ているエラーから:
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
/usr/bin/pyAES.py
の最初の行を次のように設定する必要があると思います
#!/correct/path/to/python
ここで、/correct/path/to/python
は次の出力から確認できます。
type -P python
私のシステムでは/usr/bin/python
(/usr/bin/python2
ではない)です。
最初のハードルは、プログラムの場所をシェルに通知する必要があることです。ディレクトリを指定しない場合は、PATH
環境変数で記述された実行可能検索パスにある実行可能ファイルのみを実行できます。現在のディレクトリは、そこに配置しない限り、検索パスにありません。 ./pyAES.py
を実行します。
プログラムを実行するには、そのプログラムに対する実行権限が必要です。
chmod +x pyAES.py
存在するファイルに対して「不正なインタープリター:そのようなファイルまたはディレクトリはありません」または単に「そのようなファイルまたはディレクトリはありません」などのメッセージを受け取った場合、スクリプトの Shebang 行にエラーがあることを意味します。 (詳細は / bin/sh:./check-dependencies.pl:not found — but check-dependencies.pl exists! を参照してください。)Shebang行はスクリプトの最初の行ですインタープリターの場所を示します。
インタープリターへのパスをハードコーディングしないようにするには(例:/usr/bin/python
または/usr/local/bin/python
)、/usr/bin/env
プログラムをトランポリンとして使用できます。
#!/usr/bin/env python
PEP 304 は、Python 2.xを参照するために#!/usr/bin/env python2
がすぐに使用されることを指定します。ただし、Python 2.xがpython
という名前でのみ提供され、python2
ではなく提供される既存のシステムはたくさんあります。したがって、この2つを両立させる必要があるかもしれません。 root権限があり、ディストリビューションがPython 2.xをpython
としてのみ提供するか、python2
のみを提供する場合は、他の名前へのシンボリックリンクを作成します。
エラー:「そのようなファイルまたはディレクトリはありません」(コロンの前に何もない)が表示された場合、おそらくWindowsで編集されたため、Shebang行の最後に改行があることを意味します。 CRを削除します。Shebang行にはUnix line ending (改行のみ)が必要です。
実行可能ファイルが"command not found"
変数の/bin/
または/usr/bin/
すべてのパスに存在しないために発生するエラー$PATH
。
任意のコマンドを実行すると、バックエンドでシェルはその実行可能ファイル/バイナリをPATHで検索します。 /bin/
/usr/bin/
など...
したがって、パスが適切に定義されていないと、この問題に直面します。
「./command
」を使用すると、現在のディレクトリからコマンドが実行され、ファイル名の検索にPATH変数は使用されません
pythonファイルの最初の行は次のようになります。
#!/usr/bin/python
その行は、使用するインタープリターのlinuxを示しています。 Pythonへのパスがわからない場合は、次のように入力します。
which python
最初の行にパスを追加します(例 "#!/ PATH")。ファイルは実行可能である必要があります。 "chmod + x NAME.py"で実行しました。次に、PATH環境変数(例: "/ usr/bin"または "/ usr/local/bin")にリストされているフォルダーにファイルを追加(コピーまたはシンボリックリンクを作成)します。