Centos 7 가상 머신이 있고 Python 스크립트에서 특정 셸 명령을 실행하려면 sudo 권한이 필요합니다. #!/usr/bin/env python3.7
내 스크립트 상단에 하나가 있는데 실행하면 오류가 sudo ./script.py
발생합니다 . /usr/bin/env: python3.7: No such file or directory
내 코드를 sudo로 어떻게 실행하나요? 명확히 하기 위해 간단히 입력하면 실행되지만 ./script.py
스크립트 permission denied
가 3개의 특정 명령을 실행하려고 하면 하나를 얻게 되므로 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
첫 번째는 python3.7
스크립트를 실행하는 사용자의 경로에 있어야 한다는 것입니다. 분명히 이것은 루트 사용자에게는 해당되지 않습니다.
두 번째는 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