Shebang의 대상 변경

Shebang의 대상 변경

python3shebangs에서 사용할 대상을 만들고 싶습니다 . 예. 첫 번째 줄을 사용하십시오 #!/usr/bin/env python3.

내가 시도한 것:

  • setenv python3 PATH_TO_BINARY, 또한 에 넣으면 .cshrcecho $python3도 경로를 표시합니다.

  • /bin/env NAME=python3 PATH_TO_BINARY, python3을 열지만 shebang 사용을 허용하지 않습니다. /bin/env python3=PATH_TO_BINARY에서도 동일합니다.

중요한 경우 다음 문제를 해결하고 싶습니다.

rhel 6직접 설치할 수는 없지만 액세스 가능한 네트워크 리소스에 설치된 시스템 python3을 사용할 수 있는 시스템 에서 작업하고 있습니다 . anaconda3Shebang을 절대 경로로 두는 대신 python3 경로를 올바르게 설정하고 이식 가능한 코드를 작성하고 싶습니다.

답변1

이 경우 #!변경해야 할 것은 -line이 아니라 $PATH.

#!/usr/bin/env python3

python3이는 변수 에 나열된 디렉토리에서 인터프리터를 검색하는 효과가 있습니다 $PATH.

python3예를 들어 가 에 설치된 경우 $HOME/local/bin이 디렉토리는 다음 위치에 있어야 합니다.$PATH ~ 전에인터프리터를 포함할 수 있는 다른 디렉토리 python3. 그렇지 않으면 에서 사용자 자신 대신 해당 디렉토리가 사용됩니다 $HOME/local/bin.

그래서 설정해야합니다

PATH="$HOME/local/bin:$PATH"

명령줄이나 쉘 초기화 스크립트( ~/.bashrc예:)에서. C 쉘 사용자는 다르게 수행합니다 ...

set path = ($HOME/local/bin $path)

일반적으로 #!-line은 다음을 식별합니다.통역사스크립트의 경우, 즉 파일을 구문 분석하고 실행하는 데 사용할 프로그램입니다. sed예를 들어 스크립트 는 #!/usr/bin/sed -f.

관련 정보