Wikipedia에서 .sh에 대한 기사 는 다음과 같이 말합니다.
.sh 파일 확장자 유형은 Bourne shell을 참조하십시오 .
다른 유닉스 쉘은 어떻습니까?
파일 내부 에서 shebang 이 사용 되어 인터프리터를 실행 한다는 것을 알고 있지만 궁금합니다.
- 파일 확장자의 장점과 단점은 무엇입니까?
Wikipedia에서 .sh에 대한 기사 는 다음과 같이 말합니다.
.sh 파일 확장자 유형은 Bourne shell을 참조하십시오 .
다른 유닉스 쉘은 어떻습니까?
파일 내부 에서 shebang 이 사용 되어 인터프리터를 실행 한다는 것을 알고 있지만 궁금합니다.
답변:
필자는 기술적으로 파일 확장자에 대한 "우수 사례"가 존재하지 않는다고 말하고 싶습니다. Unix / Linux / * BSD 파일 시스템은 확장자 자체를 지원하지 않습니다. 확장명이라고 부르는 것은 단일 파일 이름의 접미사 일뿐입니다. 이는 inode-moral-equivalent의 특수 지점이 확장을 위해 예약 된 VM / CMS, VMS, MS-DOS 및 Windows 파일 시스템 및 OS와 다릅니다.
그 작은 소리가 이제 끝났다. 쉘 스크립트 파일 이름에 ".sh"또는 ".ksh"또는 ".bash"접미사를 붙이는 것은 약간 어리석은 생각이다. 프로그램은 프로그램입니다. 실행되는 내용을 구별 할 때 이점이 없습니다. 유닉스 나 리눅스 또는 커널이 파일 이름 접미사 때문에 일부 파일에서 인터프리터를 호출하기로 결정한 것은 없습니다. 그것은 모두 #!
파일의 시작 부분에서 줄 또는 다른 "마법의 숫자"바이트 시퀀스에 의해 수행됩니다. 실제로 "확장자"파일 이름을 기반으로 실행할 항목을 결정하는 것이 Windows를 맬웨어로 만드는 요인 중 하나입니다. "something.jpg.exe"라는 파일이 포함 된 Windows 맬웨어 사기 수를 확인하십시오. 기본적으로 최신 Windows에는 ".exe"확장자가 표시되지 않으며 사용자가 "
미리 명령으로 생각할 수있는 것은 종종 어쨌든 쉘 스크립트입니다. 때때로 cc
sh- 스크립트 firefox
였으며 sh- 스크립트, startx
sh- 스크립트입니다. 스크립트에 ".sh"접미사를 표시하면인지 적 또는 조직적 이점이 없다고 생각합니다.
.sh
확장자 를 주면, .sh
시작할 때 명령 이름의 일부로 이를 입력해야 합니다. 그것이 확장을 넣는 것을 좋아하지 않는 주된 이유입니다 (세방 라인이있는 것과 동일). BTW, Windows의 문제는 .exe
접두사 그 자체가 아니며 (결국 image.jpg
Linux에서 이름 을 가진 실행 파일을 만드는 것은 사소한 일이지만) Windows가 일반적으로 해당 확장명을 숨기고 실행 파일을 시작하는 데 필요한 작업과 문서를 여는 것은 정확히 같습니다.
다수의? nix 환경에서 일한 사람으로서 저는 다양한 껍질로 글을 써야했습니다. 믿거 나 말거나, 플랫폼 전체에서 쉘이 동일하지 않습니다. 따라서 개인 라이브러리를 여러 셸로 유지 관리하는 경우 (필요한 경우) 확장을 사용하여 셸을 식별하는 것이 매우 유용합니다. 그렇게하면 다른 플랫폼으로 옮길 때 쉘이 약간 다를 때 수정 대상 스크립트를 알 수 있습니다. .sh .ksh .bsh .csh ...
#!
스크립트 (예 : 시작시 #!/bin/bash
)?
당신이 말했듯이, 유닉스 파일 확장자는 순수한 정보입니다. 올바른 shebang을 가지고 실행 가능하도록 스크립트가 필요합니다.
확장명이 없거나을 사용할 수 있습니다 .sh
.
나는 사용 된 쉘 (csh, tcsh, bash, sh, ...)에 관계없이 다음 규칙을 개인적으로 사용합니다.
.sh
고급 고전 스크립트, 낮은.실행 파일은 서로 호환되지 않으므로 확장 프로그램을 사용해서는 안됩니다. 쉘 스크립트가 있다고 가정하고 a.sh
python으로 다시 작성한다고 가정 a.py
하면 스크립트를 호출하는 모든 프로그램을 변경해야하며 구현 세부 정보가 유출됩니다.
Mircosoft의 Windows에서 전체 파일 이름 확장자는 엉망입니다. 예를 들어 a.audio, b.audio, c.audio
, is a.mp3, b.wav, c.ogg
및 d.picture, e.picture, f.picture
is 가 될 수 있습니다 d.jpeg, e.png, f.gif
. 우리는 대부분 오디오 나 사진의 형식을 신경 쓰지 않습니다. 또한 새로운 사용자에게 모든 파일 확장자를 가르치는 데 오랜 시간을 소비해야합니다.
*.sh
데비안의가 있다는 것입니다에 난 그냥 실행 run-parts
등과 같이 확장자를 가진 스크립트를 실행하지 않습니다 /etc/cron.*/
: archive.oreilly.com/pub/post/runparts_scripts_a_note_about.html
쉘 스크립트 확장은 매우 유용합니다. 예를 들어, 종종 같은 디렉토리에 여러 언어로 된 여러 파일 (예 : bash, awk 및 lua)이있는 스크립트를 작성합니다. bash 파일에서만 문자열을 검색 해야하는 경우 확장 프로그램은이를 매우 유용하게하여 오 탐지를 줄입니다. 또는 해당 프로젝트에 대한 모든 bash 코드의 행 수를 원할 경우.
프로그램을 실행할 때 확장명을 입력 해야하는 것은 고통 스럽기 때문에 매번 확장 프로그램을 입력 할 필요없이 기본 실행 파일의 확장명없이 symlink를 작성하여 편집 / 실행합니다. Symlink는 저렴하고 쉽습니다.
bash script.sh
(또는sh
물론) 이를 실행하는 힌트가 될 수 있습니다 .