2013-02-11 2 views
2

우분투에서 파이썬 스크립트를 사용하는 셰바 라인을 사용할 수 없습니다. 매번 오류가없는 명령 만받습니다. test.py우분투 파이썬 셰바 행이 작동하지 않습니다.

#!/usr/bin/env python 

print ('!') 

:which python 
/usr/bin/python 

가 다르게 오두막에서 파이썬 위치하지만 운이있는 파이썬에서 제공 한 것을 포함하지 주위에 플레이 란. 이 문제를 해결하는 방법에 대한 도움말?

덕분에 파이썬 docs page

+3

줄 끝이 유닉스'\ n' 개행인지 확인하십시오. –

+0

나노에서 테스트 파일을 만들었습니다. 나는 보통 숭고한 것을 사용한다. 그러나 이것은 나의 서버 위에있다. 그래서 그것은 단지 그것에서 위로 채웠다. 나는 정직하게 나노에서 특별한 숯을 보는 방법을 모른다. 나는 리눅스에서 새로운 라인을 적절히 다루었 기 때문에 생각했다. – DrewK

+0

아마 다음은 유닉스 개조입니다; 파일을 실행할 수 있습니까? ('chmod + x scriptname.py') –

답변

10

당신이 오두막과 아무 상관이 없을 수 있습니다

$ test.py 

으로 오류를 명령을 실행하려고합니다. 오히려 test.py가 상주하는 디렉토리는 에 없습니다. 시도

$ ./test.py 

PATH 조회를 우회합니다.

는 (이 스크립트 자체가 실행되어 있는지 확인하기에 추가됩니다.) 외에도 선행 점으로 스크립트를 실행하거나 실행 파일을 만드는에서

+0

테스트에서 내 주요한 문제였습니다 ./test.py의 논리가 어떻게 작동하는지 설명 할 수 있습니까? – DrewK

+1

명령이 하나의 단어로 구성되어있을 때, 쉘은'PATH'에 저장된 각 디렉토리에서 첫 번째 명령으로 시작하여 찾은 첫 번째 일치를 사용하여 명령을 찾습니다. 현재의 디렉토리 (.)는 일반적으로'PATH'에 있지 않습니다. 보안 상 위험 할 수 있기 때문에 정확한 경로를'./test.py' (현재 디렉토리의'test.py' 파일). – chepner

+0

계속 묻지는 않지만 PATH가 보안 위험에 노출되는 이유는 무엇입니까? – DrewK

6

는 말한다 :

쉽게 유닉스에 파이썬 스크립트를 사용하려면

, 당신은 그들에게 실행 파일을 만들 필요가, 예를 들어,

$ chmod + x 스크립트를 사용하여 스크립트의상단에 적절한 Shebang 행을 넣으십시오. 좋은 선택은 일반적으로 전체 PATH에서 파이썬 인터프리터를 검색하는

#!/usr/bin/env python 입니다. 그러나 일부 Unix에는 env 명령이 없을 수 있으므로 /usr/bin/python을 인터프리터 경로로 하드 코딩해야 할 수 있습니다.

귀하에게 해당되는지 여부는 확실하지 않습니다.

+0

제 적용과 그 경로를 사용하려고 시도했지만 실행할 수 없다고 생각했습니다. – DrewK

2

, 또 다른 문제가있을 수 있습니다

당신이 만약 Windows 편집기로 작성된 스크립트를 사용하려고하면 Windows 줄 끝이 포함될 수 있습니다. 이걸 제거하면 세방이 다시 작동하게 될 수 있습니다.

이러한 줄 끝을 제거하려면 예를 들어 How to convert Windows end of line in Unix end of line (CR/LF to LF)을 참조하십시오.

실패한 세방 평가에 대한 일반적인 언급을 참조하십시오. at my other answer.

0

"FIRST LINE"이 (가) 있는지 확인하십시오. 파일 시작 부분에 개행 문자를 제공하지 마십시오. "처음에는 개행 문자가 없음"

관련 문제