
Centos 7仮想マシンがあり、Pythonスクリプトで特定のシェルコマンドを実行するにはsudo権限が必要です。#!/usr/bin/env python3.7
私のスクリプトの上に1つありますが、実行するとエラーがsudo ./script.py
発生します。/usr/bin/env: python3.7: No such file or directory
私のコードをsudoでどのように実行しますか?明確にするために簡単に入力すると実行されますが、./script.py
スクリプトpermission denied
が3つの特定のコマンドを実行しようとすると1つを取得するのでsudoが必要です。
echo $PATH
結果:
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/centos/.local/bin:/home/centos/bin:/home/centos/.local/bin:home/centos/bin
sudo echo $PATH
上記と同じ結果を提供します。
type python3.7
私にしてください:
python3.7 is /usr/local/bin/python3.7
答え1
問題が多い
#!/usr/bin/env python3.7
1つ目は、python3.7
スクリプトを実行するユーザーのパスにある必要があることです。明らかに、これはrootユーザーには当てはまりません。
2つ目は、python3.7
PATHで最初のものを実行することです。バージョン3.7を明示的に要求すると、これは大きな問題ではないかもしれませんが、#!/usr/bin/env python
必須の2ではなく3を実行する-sにたくさん会いました。
そのため、使用はお勧めできません#!/usr/bin/env
。
問題には3つの解決策があります。
- ルートのPATHに入れてください
/usr/local/bin/
(推奨されていませんlocal
。デフォルトではPATHにないためです)。 #!/usr/local/bin/python3.7
スクリプトで使用してください。 Python以外のシステムで使用している場合は壊れる可能性があります。/usr/bin
python
のPythonのデフォルトインストールを使用してください。アワビの代わりに/usr/bin
それを使用することをお勧めします。#!/usr/bin/python3