2017-07-07 17 views
-1

pythonを明示的に呼び出さずにlinuxでpythonスクリプトを実行しようとしています。 私の目標は$ myscript.pyに私のスクリプトを実行させることです。現在は$ python myscript.pyと呼ばれていますが、使いやすさのために余分なコマンドを入力する必要はありません。私は適切なpython呼び出しを得るために私のスクリプトの最初の行にシバン行を追加しました。私は次の両方の行を試したが、どちらも私のために働いていない。Linuxでshebang行を使ってpythonスクリプトを実行する権限が拒否されました

#!/usr/bin/env python2.7 
#!/usr/local/bin/python2.7 

問題は、私はまた、私は、ファイルにls -ltrを行うと、私は

-rwxrwxr-x 1 uname users 3544 Jul 7 08:46 myscript.py 
-rwxr-xr-x 1 root root 6231413 Jul 7 00:57 /usr/local/bin/python2.7 

スクリプトおよび実行可能ファイルの実行権限を持って、次の行動

$ python2.7 myscript.py # This will run 

$ myscript.py   # This is the error 
$ ./myscript.py   # This will also error 
: Permission denied  # Error message 

をすることができ得るということですいずれかのシバン行に書かれているものをコマンドラインに入力してpythonを呼び出します。

/usr/bin/env python2.7 
/usr/local/bin/python2.7 

両方とも端末で実行されます。

私は以下のstackoverflowの問題を突き抜けましたが、なぜこの問題が私に起こっているのか答えられないようです。

bash permission denied for python

Python script: problems with shebang line (unix)

+3

試した '。/ myscript.py'? –

+1

'ls -l/usr/local/bin/python2.7'を実行すると何が表示されますか? – Jack

+0

"Permission denied"は本当に奇妙です。通常は 'PATH'は' .'を含んでいません。その場合、シェルは "command not found"のようなものを言うでしょう。あなたはスクリプトの名前について確かですか?あなたのユーザ名は文字通り「uname」ですか、それとも単に匿名化されていますか?どのバージョンのBashを実行していますか? – l0b0

答えて

0

Linux上で実行している場合LF行末ないCRLF改行コードを使用してください!あなたに@jwodderの提案をありがとうございます。

私はWindowsで自分のファイルを編集し、Linuxマシン上でファイルを実行するためにsublimetextを使用していました。私はunlix行末(LF)を使用するために崇高な設定を変更しましたが、私はすでにDOSの終わり(CRLF)にファイルを書きました。私はそれが私のために行末を切り替えるだろうと思った。私の前提は間違っていた。私はそれらをすべてLFに変換し、スクリプトは期待どおりに実行されました。

関連する問題