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

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

나는 보았다이 웹사이트에 있는 이 질문이것이 나에게 이런 질문을 하게 만들었다. Unix 언어에서 실행 파일과 쉘 스크립트의 차이점이 무엇인지 알고 싶습니다.

답변1

실행 파일은 실행 비트가 설정되어 실행될 수 있는 모든 파일입니다(프로그램이 실제로 실행될 때 오류가 발생하더라도).

쉘 스크립트는 특정유형#!인터프리터를 지정하는 지시어를 사용하여 셸에서 해석되도록 만들어진 실행 파일입니다.

답변2

스크립트파일입니다:

  • 사람이 읽을 수 있어야 합니다(적어도 합리적으로 훈련받은 사람, 즉 파일이 인쇄 가능한 문자로 구성되어 있음).
  • 다음과 같이 이해된다통역사프로그램의 동작을 설명하는 지침입니다.

쉘 스크립트통역사가 다음과 같은 스크립트입니다.껍데기. UNIX 세계에서 "쉘"은 다음과 같은 것을 의미합니다.본 쉘;현대적인 쉘(ash, bash, ksh, zsh 등)은 다음을 준수합니다.POSIX쉘 표준. 보다 일반적으로 "쉘"이라는 용어에는 csh, tcsh, fish...와 같은 다른 명령 해석기가 포함될 수 있습니다.


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

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

    • 기본 실행 파일은 운영 체제의 바이너리 실행 파일 레이아웃에 따라 구성된 기계어 코드로 구성됩니다. 대부분의 최신 UNIX 시스템에서는매우 낮은 주파수기본 실행 파일의 형식입니다.
    • 스크립트. 실행 가능한 스크립트는셰르본#!두 문자 뒤에 파일 경로가 오는 라인으로 구성됩니다 . 이러한 파일을 실행하기 위해 커널은 인터프리터를 실행하고 스크립트 경로를 인수로 전달합니다.
    • 시스템에 따라 다른 형식일 수도 있습니다. 예를 들어 Linux는 다음을 통해 임의의 파일 형식을 등록할 수 있습니다.binfmt_misc시설. 이를 통해 Java 바이트코드 파일이 등록된 경로를 통해 실행될 수 있습니다.가상 기기, Windows 실행 파일 통과와인, 등.

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


쉘 스크립트는 일반적으로 실행 가능합니다. 하지만 실행 권한이 없으면 실행이 불가능할 수도 있습니다. 예를 들어 명시적으로 인터프리터에 전달하여 해석할 수 있습니다 bash /path/to/script. "해석하다"는 "실행하다"를 의미하는 멋진 방법입니다.

답변3

쉘 스크립트:

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

스크립트 이름은 ".sh", ".bash" 또는 ".csh" 등으로 끝날 수 있지만 반드시 그럴 필요는 없습니다. (이는 스크립트가 시작되어야 하는 쉘을 나타냄)

명확성을 위해 스크립트 이름은 script이고 시작해야 하는 셸은 이라고 가정합니다 bash.

셸에서 시작하는 일반적인 방법은 bash /absolute/path/to/the/script또는 입니다 bash ./relative/path/to/the/script. 이렇게 하면 실행 비트를 설정할 필요가 없습니다. 왜냐하면 bash에서만 읽고 실행할 수 있기 때문입니다.

그것할 수 있는+x(실행 파일)는 현재 쉘 세션에서 직접 실행되도록 설정할 수도 있습니다: /absolute/path/to/the/script (또는 ./relative/path/to/the/script). 참고: 기본적으로 이 방법으로 시작하면 사용자가 입력한 셸을 통해 시작됩니다.또는posix 쉘을 통해(동작은 OS에 따라 다름) 실행해야 하는 쉘이 아닐 수도 있습니다. 이것이 바로 스크립트의 첫 번째 줄에 #!/path/to/good/shell 을 지정할 수 있고 지정해야 하는 이유입니다. 이는 스크립트가 실제로 /path/to/good/에서 시작되어야 함을 운영 체제에 나타냅니다. 껍데기 .

실행 가능 파일:

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

팁: file /some/file파일 내용에 대한 자세한 정보를 알려줄 수 있습니다. 몇 가지 예를 시도 file /usr/bin/bash하거나 file /etc/profile살펴보십시오.

관련 정보