쉘 스크립트 소스 파일 확장자에 대한 공식 표준/협약

쉘 스크립트 소스 파일 확장자에 대한 공식 표준/협약

쉘 스크립트를 실행하는 대신 얻고자 하는 파일 유형 확장자에 대한 규칙이 있는지 궁금합니다. 예를 들어:

  1. 이 스크립트를 서브쉘에서 실행하고 싶다면.

     ./script.sh 
    
  2. 현재 셸에서 이 스크립트를 실행하는 것을 기억하고 싶다면 어떻게 해야 합니까?

     . script.source 
    

당신은 가지고 있습니까?계약(예: POSIX) 두 번째 예의 파일 형식은 무엇입니까? .source또는 와 유사합니까 .sourceme?


고쳐 쓰다

이 질문은 어떤 의견도 묻지 않습니다. 그러한 스크립트에 대해 표준화된 파일 확장자가 있는지 알고 싶다는 점을 분명히 했습니다. 이 질문은 아닌 것 같네요비슷한 문제에 대해 잘 알려진 질문입니다.(.sh 또는 .bash 확장자를 사용하는 bash 스크립트?).

답변1

나는 (POSIX 언어 .sh로 된 파일의 경우 , sh와 호환되지 않는 파일의 경우, 즉 확장자는 스크립트가 작성된 언어를 식별함) 얻을 파일(또는 더 일반적으로 실행할 의도가 없는 파일)과 다음 파일을 사용할 것입니다 . 실행될 확장자가 없습니다.sh.bashbash

다음을 추가할 수도 있습니다.

#! /bin/echo Please-source

오류가 실행될 때(파일에 실행 권한이 부여되지 않았으면 좋겠지만 이미 실행을 차단하므로) 알림을 받고 대신 받아야 합니다.

답변2

소스 파일의 경우 가장 좋은 접근 방식은 구성 스크립트의 경우 .conf이고 기능이나 기타 유틸리티가 있는 파일의 경우 .shlib 또는 .shlibs입니다.

스크립트가 잘못된 쉘로 실행되는 것을 방지하고 hashbang만으로는 충분하지 않은 경우 다음을 사용할 수 있습니다.

if [ "$(readlink "/proc/$$/exe")" != "/bin/bash" ]; then
      echo >&2 "CAUTION: Wrong interpreter detected. You must use bash."
      exit 1
fi

관련 정보