이 사이트에서이 질문을 보았 으므로이 질문 을하도록 촉구되었습니다. 유닉스에서 실행 파일과 쉘 스크립트의 차이점이 무엇인지 알고 싶습니다.
답변
실행 파일은 실행할 수있는 실행 가능 비트 세트가있는 파일을 말합니다 (실제 프로그램 실행에 오류가있는 경우에도).
쉘 스크립트는 인터프리터 를 지정하기 위해 지시문을 사용하여 쉘에 의해 해석되는 특정 유형 의 실행 파일입니다 #!
.
답변
스크립트가 있는 파일입니다 :
- 사람이 읽을 수있는 것 (적어도 합리적으로 훈련 된 사람, 즉 파일이 인쇄 가능한 문자로 구성됨); 과
- 인터프리터 는 프로그램의 동작을 설명하는 지침으로 이해 합니다.
쉘 스크립트는 그 인터프리터 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
“해석”)는 “실행”이라고 말하는 멋진 방법입니다.
답변
쉘 스크립트 :
쉘 스크립트는 쉘 (일반적으로 sh 또는 sh 호환 쉘, 때로는 다른 쉘)에 의해 해석되는 일련의 명령입니다.
스크립트 이름은 “.sh”또는 “.bash”또는 “.csh”등으로 끝날 수 있지만 반드시 시작해야하는 것은 아닙니다 (쉘에 대한 힌트 제공).
명확히하기 위해 스크립트 이름은 script
이고 시작해야 할 쉘은 bash
입니다.
쉘을 실행하는 일반적인 방법은 다음과 같다 : bash /absolute/path/to/the/script
나 bash ./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
몇 가지 예를 보십시오 .