리눅스는 스크립트를 실행 ./ 쉬와의 차이는 무엇인가?

  매우 흥미로운 예 :

  SH 쉘입니다. 실행 쉬 a.sh는, 내가이 쉬 스크립트를 설명하는 데 사용하는 의미, 내가 직접 ./a.sh 실행하면, 제일 먼저 당신이 통역 여부, 지정되지 않은 경우, 현재 시스템 기본값을 사용합니다 지정 스크립트의 첫 번째 라인을 찾을 수 인터프리터가 지정된 경우 쉘 (대부분의 리눅스 기본 bash는있다), 다음 스크립트 인터프리터를 지정합니다.

문서의 내용 a.run 예를 들어 이것이다 :

#!는 / usr / 빈 / 파이썬 
인쇄 ( " 이것은 파이썬 스크립트입니다 " )

  당신이 ./a.run 실행 그렇다면, 그 결과는 텍스트 행의 출력이지만 쉬 a.run을 실행하면, 불평 할 것이다

[feishu @ 로컬 호스트의 tmp] $ ./ a.run 
이 파이썬 스크립트입니다 
[feishu @ 로컬 호스트의 tmp] $ SH a.run 
a.run : 행 2 :`예기치 않은 토큰 근처의 구문 오류 " 이것은 파이썬 스크립트입니다 " '
 a.run은 : 행 2 : '인쇄 ( " 이것은 파이썬 스크립트입니다 " ) '

  이것은 파이썬 스크립트이기 때문에, SH 읽어 보시기 바랍니다. (리눅스에서 접미사는 일반적으로 매우 엄격하지 않습니다, .RUN 접미사라는 임의)
  쉬 당신은 쉘 스크립트를 작성하고, ./a.sh 요구된다. 쉬 차이,이 기본 셸 및 스크립팅에 따라, 당신은 쉬를 작성하는 경우 (Bourne 쉘) 스크립트와 쉬를 선언하는 인터프리터의 첫 번째 줄, 그렇게 차이가 없습니다,하지만 당신은 떠들썩한 파티를 작성하는 경우 ( Bourne의 다시 쉘) 스크립트는 결과는 다를 수 있습니다 일부 때문에 내장 명령 sh와 bash, 문법 동일하지 않습니다.
-------------------------------------------------- - 추가 ---------------------------------------------- ------
  내 테스트 환경은 레드햇 7.4입니다

[루트 @ localhost를 ~] # 개의 LS `-al 있는  ` 
lrwxrwxrwx합니다. 1 루트 루트 4 6月21  2018 는 / usr / 빈 / SH -> bash는 

[feishu @ localhost를 ~] $ 에코 $ SHELL은
 / 빈 / bash는

  당신이 쉘 스크립트를 작성할 경우, 쉬 다음이 릴리스에서, 실제로 bash는 당신을 볼 수 있지만, 스크립트는 첫째 줄 셸 인터프리터를 선언 사용하고 쉬 a.sh이 ./a.sh하지 않았다 차이점은 무엇입니까

  이 전환 : https://www.cnblogs.com/leanfish/p/9956516.html

추천

출처www.cnblogs.com/despotic/p/11114818.html