스크립트를 .sh 확장자로 저장해야합니까?


66

일부 기능적인 스크립트가 있는데 /usr/bin이를 일반 터미널 명령으로 사용하고 싶습니다. .sh확장명 과 함께 사용하는 것이 좋 습니까, 확장명없이 저장할 수 있습니까?


6
또한 모든 사용자가 해당 스크립트를 사용할 수있게하려면 /usr/local/bin더 나은 선택이 될 수 있습니다.
Salem

6
@Salem이 /usr/bin/usr/local/bin모두 모든 사용자가 사용할 수 있지만한다 /usr/local/bin패키지의 일부가 아닌 실행 파일에 대한 더 좋다.
gerrit

내가 본 유일한 이점은 vim 또는 nano와 같은 편집자가 처음부터 바로 강조 표시하는 방법을 알고 있다는 것입니다.
분노

1
@rath shebang을 #!/usr/bin/env bashor로 설정하면 확장명없이 구문 강조 표시가 나타납니다 #!/bin/bash.
Sparhawk

@Sparhawk 사실이지만 스크립트를 실행하려고 할 때까지 자주 잊습니다.)
rath

답변:


71

아니요, 좋은 습관이 아닙니다. 스크립트를 확장하지 않고 보관해야합니다. 패키지의 일부인 스크립트에는 .sh 확장자 (예 : update-grub.sh가 아닌 update-grub )가 없습니다 . 여전히 확신이 없다면 Google Shell Style Guide에 다음과 같이 나와 있습니다.

실행 파일에는 확장명 (강하게 선호 됨) 또는 .sh 확장명 이 없어야 합니다. 라이브러리는 .sh 확장자를 가져야하며 실행 가능하지 않아야합니다.

추신 : 스크립트를에 넣을 필요는 없습니다 /bin. 디렉토리를 작성 ~/bin하고 스크립트를 거기에 넣을 수 있습니다. 디렉토리 ~/bin$PATH기본적으로 포함되어 있으므로 스크립트는 다른 쉘 명령으로 실행할 수 있습니다.


4
"디렉토리 ~ / bin이 $PATH기본적으로 포함되어 있습니다 " -언제부터? 어쨌든 ~/.local/bin표준이므로 더 나은 선택 일 것입니다.
nyuszika7 시간

1
"라이브러리는 확장자가 .so 여야합니다"를 의미합니까? 쉬지 마
Keith Wolters

3
@KeithWolters가 아니라 Google입니다. 둘째, .sh가 아니라 .sh이므로 바이너리가 아닌 쉘 스크립트에 대해 이야기하고 있습니다.

1
Google 스타일 가이드는 Google에만 해당됩니다. 예를 들어 "Bash는 실행 파일에 허용되는 유일한 셸 스크립팅 언어입니다." 모범 사례보다는 내부 규칙이 분명합니다.
Paul Draper

1
@ ~ / 디렉토리가 존재하는 경우 .profile에 ... 그것이 당신의 경로에 $ 홈 / 빈을 삽입 체크 아웃 nyuszika7h
코리 골드버그

9

Sergey가 말한 것처럼 을 사용 ~/bin하는 것이 좋습니다 . 또는 에 이미있을 수 있습니다 . 하나:$PATH/usr/local/binPATH

  • 당신은 자신을 위해 이것을하고 있습니다. 편안하다고 느끼는 것을 사용하십시오. 사실, 확장 프로그램을 유지하면 실행중인 스크립트임을 상기시켜줍니다.
  • 확장 프로그램은에서 일반적이지 않습니다 /usr/bin. 내 시스템에서는 두 개만 찾을 수 있습니다.

    $ dpkg -S `ls /usr/bin/*.sh`
    mtools: /usr/bin/amuFormat.sh
    gettext-base: /usr/bin/gettext.sh

    따라서 포장하는 경우 확장을 생략하십시오.


2
~/bin에 추가됩니다 $PATH자동으로 존재하는 경우, 필요가 수동으로 추가 없습니다. 디렉토리를 만들고 로그 아웃 한 후 다시 로그인하십시오.
Sergey

5

파일 맨 위에 다음 줄을 넣으십시오.

#!/bin/bash

따라서 해당 파일은 자동으로 입력됩니다 : 확장명이없는 Shell Script !

파일에 실행 권한을 부여해야합니다.

직접 명령으로 실행할 수 있도록 스크립트를 배치하려면 다음을 방문하십시오. 직접 명령으로 스크립트를 실행할 수 있도록 스크립트를 어디에 두어야합니까?


2
또는 전체 bash 쉘이 필요하지 않은 경우에도 #! / bin / sh 만 있습니다.
flickerfly

많은 OS들이 / bin / sh와 / bin / bash를 연결합니다
Max Coplan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.