최상 답변
#!/bin/bash
이것은 shebang으로 알려져 있으며, 인터프리터에게 다음 줄이 bash에 대해 작성되었음을 알려줍니다. 따라서이 파일을 bash 스크립트로 실행하십시오.
#Example: Scripts are usually executed like below:
./scriptName
그래서 shebang은 스크립트 해석 방법을 결정합니다. 때로는 다음과 같을 수 있습니다.
#!/bin/sh
#!//usr/bin/perl
#!/usr/bin/python
#!/bin/bash
#!/bin/ksh
그러므로이 줄은 스크립트가 해석되고 실행됩니다. 이제 왜 /bin/sh
?
구성된 셸 중 하나를 가리키며, 때로는 sh
가
, 때때로 cshell, dash,zsh ,ksh
등과 같은 다른 셸
예 :
#case-1:
ls -lrt /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
#case-2
ls -lrt /bin/sh
lrwxrwxrwx 1 root root 4 Jul 12 2017 /bin/sh -> bash
따라서 스크립트에서 #!/bin/sh
를 사용하는 경우 스크립트의 동작은 는 시스템을 가리 킵니다. 다음과 같은 스크립트를 실행하여 shebang을 재정의 할 수 있습니다.
bash scriptName
#or
sh scriptName
위의 두 경우 shebang은 실행에 영향을주지 않으며 및 sh
(쉘이 가리킴).
답변
음, 작동 방식은 정확히 세부 사항이 많으므로 여기서는 매우 정확하지 않을 것입니다. 모든 프로그램은 특정 전용 메모리 섹션에 코드를 넣은 다음 해당 인 메모리 코드 이미지의 진입 점을 호출하여 실행됩니다. 그 후에 프로그램이 실행됩니다.
코드 이미지를 메모리에 저장하는 작업은 운영 체제에서 수행하며 시작또는 프로그램 실행이라고합니다. OS는 자체적으로 한 번만 수행합니다. init 프로세스를 시작할 때 부팅시. init 프로세스와 그 하위 항목은 exec 를 호출하여 OS에 다른 프로세스를 시작하도록 요청합니다. OS 시스템 호출.
쉘은 한꺼번에 특별하고 평범합니다. 다른 프로그램과 마찬가지로 실행되는 또 다른 프로그램입니다. 특별한 초능력이나 특별한 속성이 없습니다. 주로 사용자가 지정한 다른 프로그램을 시작하기 위해 사용자가 OS의 서비스에 액세스 할 수 있도록하는 목적이 있습니다. 사용자가 파일 시스템에 액세스하고 일부 표준 데이터 통신 스트림이 사용되는 방식을 지정하는 사용자 액세스 방법을 제공합니다 ( stdin , stdout 및 stderr ).
셸은 다음 작업에 사용할 수있는 프로그래밍 언어를 제공합니다. 효율성을 위해 자동화 된 방식으로 일을 수행하고 의사 결정 및 반복을 수행하여 사용자 상호 작용없이 작업 할 수 있습니다. 사용자가 프로그래밍 언어 및 명령 줄 처리를 호출하기 위해 배우고 사용해야하는 특수 구문 및 표기법을 제공하고 사용합니다. 쉘 명령의 처리는 대화 형 터미널 또는 스크립트를 포함하는 텍스트 파일에서 올 수 있습니다.
쉘이 실행하는 프로그램을 쉘의 하위 프로세스라고합니다. 모든 프로세스는 다른 프로세스를 시작할 수 있으므로 셸은 그런 의미에서 특별하지 않습니다. 셸은 사용자가 자식 프로세스를 시작하는 방법을 지정할 수 있도록 최적화되어 있습니다. 다음 명령을 사용하여 Linux 호스트에있는 모든 프로세스의 계층 구조를 볼 수 있습니다.
ps -e lf
목록에서 찾을 수 있습니다. ps 프로세스 자체이며이를 실행하는 데 사용한 셸 프로세스의 하위 프로세스로 표시됩니다.
여기 훨씬 더 자세한 내용입니다. Quora 답변에서 다루기에는 너무 많습니다.