일부 유닉스 계열 시스템에서는 공백이 허용되지 않았지만 약간의 연구가이를 지원하지 않는다는 막연한 기억이 있습니다.
이 this Wikipedia article에 따르면, #!
구문 월에 버전 8 유닉스에 도입 된이 기능의 1980 년 데니스 리치의 초기 발표는 말한다 : 그 파일이 실행되는 경우가 시작되도록
시스템이 변경되었습니다 의 마술 문자 #! , 행의 나머지 부분은 실행 파일의 해석기 이름이 인 것으로 이해됩니다. 이전에는 (실제로는 ) 셸이이 작업을 많이 수행했습니다. 문자 파일의 이름을 명령으로 입력하면 자동으로 이 실행 가능 모드로 텍스트 파일에서 실행됩니다. 시설을 시스템에 넣으면 다음과 같은 이점이 있습니다.
이 멋진 기회를 활용하기 위해
[SNIP는, 쉘 스크립트의 첫 번째 줄의 왼쪽 여백에
#! /bin/sh
을 넣어. 공백 후 ! 괜찮습니다. 전체 경로 이름을 사용하십시오 (검색이 수행되지 않음). 순간에 전체 줄은 16 자로 제한되지만이 한도 인 이 발생합니다.
그것은 나중에, 유닉스 계열 시스템이 #!
구문을 지원하지만 웁니다 !
후 허용하지 못했지만, 최초의 구현이 명시 적으로 가능성이 보인다, 공백을 허용 주어진 것을 생각할 수있다.
leonbloy의 대답은 좀 더 자세한 내용을 제공합니다.
UPDATE :
자체가 심지어는 커널에 의해 인식되지 않는 것 시스템, #!
로 시작하는 라인을 인식 펄 인터프리터. 자세한 내용은 perldoc perlrun
을 실행하거나 this web page을 참조하십시오.
#! 라인은 항상 회선이 인 것처럼 스위치에 대해 검사됩니다. 따라서 #f와 함께 하나의 인수 인 만 허용하는 시스템에 있다면! 라인 또는 악화, 심지어 #을 인식하지 않습니다! 행을 사용하면 은 Perl이 이 호출 된 방식과 상관없이 일관된 스위치 동작을 얻을 수 있습니다. 심지어 -x가 프로그램의 시작 부분을 찾는 데 사용 되더라도 마찬가지입니다.
Perl은 #!
다음의 공백도 허용합니다.
(개인적으로, 나는 공백없이 #!
라인을 작성하는 것을 선호하지만 어느 쪽이든 작동합니다.)
둘 다 모두 일을 본 적이 있다면, 그것은 취향의 문제 있다는 추론하기 위하여 서 것입니다/미적. –
나는 이것이 프로그래밍과 어떤 관계가 있는지 모르겠습니다. – ergosys
@ JustinPearce : 그건 안전한 가정이 아닙니다. 어떤 시스템은 '#!'다음에 공백을 허용하지 않으므로 공 간이없는 버전을 더 이식성있게 만들 수 있습니다. 그러나, 모든 시스템이 공란을 허용 할 가능성이 높습니다. 자세한 내용은 내 대답을 참조하십시오. –