유닉스에서 쉘 스크립트와 실행 파일의 차이점은 무엇입니까?


답변:


12

실행 파일은 실행할 수있는 실행 가능 비트 세트가있는 파일을 말합니다 (실제 프로그램 실행에 오류가있는 경우에도).

쉘 스크립트는 인터프리터 를 지정하기 위해 지시문을 사용하여 쉘에 의해 해석되는 특정 유형 의 실행 파일입니다 #!.


12

스크립트가 있는 파일입니다 :

  • 사람이 읽을 수있는 것 (적어도 합리적으로 훈련 된 사람, 즉 파일이 인쇄 가능한 문자로 구성됨); 과
  • 인터프리터 는 프로그램의 동작을 설명하는 지침으로 이해 합니다.

쉘 스크립트는 그 인터프리터 A는 스크립트입니다 . 유닉스 세계에서“쉘”은 Bourne 쉘 과 유사한 쉘 제품군을 나타냅니다 . 현대의 그러한 쉘 (ash, bash, ksh, zsh,…)은 POSIX 쉘 표준을 따릅니다 . 보다 일반적으로“shell”이라는 단어는 csh, tcsh, fish 등과 같은 다른 명령 해석기를 포함 할 수 있습니다.


실행 파일이 실행될 수있는 파일입니다. 효과적으로 실행 가능하려면 파일에는 두 가지 속성이 있어야합니다.

  • 사용자는이를 실행할 권한이 있어야합니다. 이것은 명령으로 볼 수 있습니다 ls -l: x권한 열에 문자가 있어야합니다.
  • 파일 형식은 시스템이 실행 파일로 인식하는 형식이어야합니다. 실행 가능한 형식은 여러 범주로 나눌 수 있습니다.

    • 기본 실행 파일-운영 체제의 이진 실행 파일 레이아웃에 따라 구성된 머신 코드로 구성됩니다. 대부분의 최신 유닉스 시스템 은 기본 실행 파일에 ELF 형식을 사용합니다 .
    • 스크립트. 실행 스크립트는 파일이 두 개의 문자 와 파일 경로 로 구성된 shebang 행으로 시작 #!하는 파일입니다. 이러한 파일을 실행하기 위해 커널은 인터프리터 프로그램을 실행하고 스크립트 경로를 인수로 전달합니다.
    • 시스템에 따라 다른 형식 일 수도 있습니다. 예를 들어, Linux는 binfmt_misc 기능을 통해 임의의 파일 형식을 등록 할 수 있습니다 . 이를 통해 등록 된 JVM을 통해 Java 바이트 코드 파일을 실행할 수 있고 Wine을 통해 Windows 실행 파일을 실행할 수 있습니다 .

실행 파일은 시스템에 따라 다릅니다. 예를 들어, amd64 Linux 바이너리는 amd64 Linux 시스템에서 실행 가능하지만 32 비트 시스템에서는 실행 가능하지 않습니다. Android 용 바이너리는 일반 Linux 설치에서 실행할 수 없습니다. Windows 실행 파일은 Wine이있는 경우 Linux에서만 실행 가능합니다. 로 시작하는 스크립트 #!/usr/local/bin/ruby는에 위치한 프로그램이있는 경우에만 실행 가능합니다 /usr/local/bin/ruby.


쉘 스크립트는 일반적으로 실행 가능합니다. 그러나 실행 권한이 없으면 실행 불가능할 수 있습니다. 통역사에게 명시 적으로 전달하여 해석 할 수 있습니다 (예 : bash /path/to/script"해석")는 "실행"이라고 말하는 멋진 방법입니다.


2

쉘 스크립트 :

쉘 스크립트는 쉘 (일반적으로 sh 또는 sh 호환 쉘, 때로는 다른 쉘)에 의해 해석되는 일련의 명령입니다.

스크립트 이름은 ".sh"또는 ".bash"또는 ".csh"등으로 끝날 수 있지만 반드시 시작해야하는 것은 아닙니다 (쉘에 대한 힌트 제공).

명확히하기 위해 스크립트 이름은 script이고 시작해야 할 쉘은 bash입니다.

쉘을 실행하는 일반적인 방법은 다음과 같다 : bash /absolute/path/to/the/scriptbash ./relative/path/to/the/script. 그렇게하면 bash 만 읽을 수있는 실행 비트 세트가 없어도됩니다.

그것은 도 설정 + X (실행)와 현재 쉘 세션에서 직접 실행할 수 있도록하려면 : / 절대 / 경로 /에 /은 / 스크립트 (또는 ./relative/path/to/the/script). 주의 : 기본적으로 이런 방식으로 시작하면 입력 한 셸 또는 posix 셸 (동작에 따라 OS에 따라 다름)을 통해 시작되므로 실행되는 셸이 아닐 수 있습니다. 그렇기 때문에 스크립트의 첫 번째 줄로 #! / path / to / good / shell을 지정할 수 있습니다 (/ path / to / good / shell 대신 스크립트를 실행해야한다는 것을 OS에 나타냅니다).

실행 파일 :

실행 파일은 실행할 사용자 / 그룹에 대해 "x"비트가 설정된 파일입니다. 일반적으로 "이진"또는 스크립트 일 수 있습니다.

팁 : file /some/file파일 내용에 대해 자세히 알려줄 수 있습니다. file /usr/bin/bash또는 file /etc/profile몇 가지 예를 보십시오 .


현재 쉘에서 실행하는 shebangless 스크립트에 대한 설명이 올바르지 않습니다. 동작은 OS에 따라 다릅니다. 일반적으로 POSIX 쉘 또는 로그인 쉘이 사용됩니다.
jlliagre

이 정밀도에 감사드립니다. 귀하의 의견을 추가하기 위해 답변을 편집하겠습니다.
Olivier Dulac
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.