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


12

실행하지 않고 소스를 작성하려는 쉘 스크립트의 파일 유형 확장자에 대한 규칙이 있는지 궁금합니다. 예를 들면 다음과 같습니다.

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

    ./script.sh 
  2. 현재 셸에서이 스크립트를 실행해야한다는 것을 기억하십시오.

    . script.source 

거기에 대회 두 번째 예에서 파일 타입 (예를 들어, POSIX 등)? .source또는 무엇인가 .sourceme?


최신 정보

이 질문은 어떤 의견도 묻지 않습니다. 이런 종류의 스크립트에 대해 표준화 된 파일 확장자가 있는지 알고 싶습니다. 이 질문은 비슷한 문제에 대해 잘 알려진 질문 보다 의견에 근거하지 않습니다 ( bash 스크립트에 .sh 또는 .bash 확장명을 사용 하시겠습니까? ).


1
어떤 사람들은 실행 파일을 실행할 수있는 쉘 스크립트 (예 : 시작 #!/bin/sh또는 이와 유사한 것으로 시작)는 확장명이 없어야한다고 생각합니다. 사용자는 기본 스크립트가 작성된 언어에 신경 쓸 필요가 없기 때문입니다.
the_velour_fog

1
용도에 따라 env, rc, conf 등을 가질 수 있습니다.
123

1
123 @ 당신이 뭔가 유용한 먹으 렴를 구축하고 그것을 넣어 때때로 일단 따라 $PATH그와 같은, 그래서, 당신은 모든 시간을 사용하는 온 ps, ls, curl다른 명령, 당신은 주위 빌드 쉘 완성 기능을 시작하는 모든, 내가 발견 확장을 삭제해도됩니다. 그러나 그렇습니다. 스스로 실행할 수없는 쉘 스크립트를 소싱 할 때 나는 그렇게하지 않을 chmod +x것이며 이름을 지정할 것 script.sh입니다. 또한 확장 프로그램을 지정하지 않으면 편집기에서 구문 강조 표시를 얻지 못하기 때문에 확장 기능을 종종 할당합니다.
the_velour_fog

5
컨벤션이 없습니다. 회사에 있거나 공유 프로젝트 (예 : 오픈 소스)에서 공동 작업하는 경우 현지 표준을 준수해야하지만 실제로는 협약이 없습니다.
Stephen Harris

1
"컨벤션" (2 번을 의미) 이라는 단어 는 아마도 "의견 기반"답변으로 이어지는 것입니다. 소스 오픈 그룹 스펙은 어떤 명명 표준을 적용하지 않습니다.
Jeff Schaller

답변:


18

내가 사용하는 거라고 .sh합니다 (POSIX의에서 파일을 sh언어 .bash가 아닌 SH 호환을 위해 bash(또는 더 일반적으로 실행될 수 없습니다) 파일을 공급하기위한 것 즉 확장 식별 스크립트가 작성된 언어이며, 파일) 실행할 파일의 확장자가 없습니다.

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

#! /bin/echo Please-source

실수로 실행될 때 (이 파일에는 이미 실행을 방해하는 실행 권한이 주어지지 않아야한다고 생각하지만) 대신 소스를 사용해야한다는 알림을받습니다.


스크립트가 공급되지 않는 경우에도 (종료 할 수 있습니다 stackoverflow.com/q/2683279/4694621 )
마테우스 Piotrowski

4

소스 파일의 경우 가장 좋은 방법은 스크립트를 구성하는 파일의 경우 .conf이고 함수 또는 다른 유틸리티가있는 파일의 경우 .shlib 또는 .shlib입니다.

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

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

1
당신이 리눅스 전용을 사용하려고하는 경우 /proc/$$/exe, 당신은뿐만 아니라 그것을 할 수 있습니다 case $(readlink "/proc/$$/exe") in */bash)...,하지만 여기, 나는 단순히 사용하십시오 : if [ -z "$BASH_VERSION" ]. ( echo이어야한다 echo >&2). (난 당신이 좋아하는 .conf.shlibs(하지만 SH 파일) 확장은 확장에 의존 도움말 구문 형광펜하지 않을 수 있습니다 생각을).
Stéphane Chazelas

예,이 .shlibs, 내가 donwload하는 일종의 프로그램에서 보았지만 기억하지 못하므로 이것을 사용하기 시작했습니다. 팁 주셔서 대단히 감사합니다, 나는 더 아름다운 readlink 버전으로 질문을 편집 할 것입니다. ;-)
Luciano Andress Martini

@ StéphaneChazelas 구문 강조는 파일 자체의 메타 데이터 (Emacs 및 Vim에서 가장 중요)를 통해 트리거 될 수 있으므로 파일 이름 확장자 선택은 이와 관련이 없습니다.
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.