![쉘 스크립트의 첫 번째 줄에는 무엇이 쓰여 있습니까? 그게 무슨 뜻이야? 내가 그 줄을 쓰지 않으면 어떻게 될까요? 그렇다면 스크립트를 어떻게 실행합니까? [복사]](https://linux55.com/image/162124/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EC%A4%84%EC%97%90%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%B4%20%EC%93%B0%EC%97%AC%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%EA%B7%B8%EA%B2%8C%20%EB%AC%B4%EC%8A%A8%20%EB%9C%BB%EC%9D%B4%EC%95%BC%3F%20%EB%82%B4%EA%B0%80%20%EA%B7%B8%20%EC%A4%84%EC%9D%84%20%EC%93%B0%EC%A7%80%20%EC%95%8A%EC%9C%BC%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%90%A0%EA%B9%8C%EC%9A%94%3F%20%EA%B7%B8%EB%A0%87%EB%8B%A4%EB%A9%B4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
쉘 스크립트의 첫 번째 줄은 무엇을 의미합니까? 해당 줄을 작성하지 않으면 어떻게 됩니까? 그러면 스크립트를 어떻게 실행합니까?
답변1
첫 번째 줄(shebang이라고 함)은 파일을 실행하는 데 어떤 인터프리터를 사용해야 하는지 알려줍니다. "관련성"으로 표시된 Steeldriver의 답변은 무엇을 기대하는지 더 자세히 알려줄 것입니다.
그래서 시작하면
#!/bin/bash
bash
이 파일을 해석하는 데 사용됩니다. 다른 일반적인 실행 프로그램은 #!/usr/bin/perl
또는 입니다 #!/usr/bin/python
. 그러나 tst
파일을 생성하는 경우에는 이에 국한되지 않습니다.
#!/usr/bin/vi
jantje zag eens pruimen hangen
oh als eieren zo groot
, 파일을 실행 가능하게 만들고( chmod +x tst
) 실행하면( ./tst
) 파일을 편집하기 위해 vi가 시작됩니다.
질문의 다음 부분은 첫 번째 줄에 shebang이 없으면 어떻게 되는지입니다. 대답은 현재 사용되는 통역사가 사용된다는 것입니다. 데모: 파일 만들기 tst
:
ps -f
(shebang은 없고 한 줄만) 실행 파일을 만들고( chmod +x tst
) 실행합니다( ./tst
). 결과는 다음과 유사합니다.
ljm@phi:~$ ./tst
UID PID PPID C STIME TTY TIME CMD
ljm 1379 1377 0 Oct06 pts/3 00:00:00 -bash
ljm 20769 1379 0 10:34 pts/3 00:00:00 -bash
ljm 20770 20769 0 10:34 pts/3 00:00:00 ps -f
(1379는 현재 쉘이고 20769는 해석을 위한 bash tst
이므로 ps의 상위(PPID)입니다.)
a를 시작 sh
하고 다시 실행 하면 tst
다음이 표시됩니다.
ljm@phi:~$ sh
$ ./tst
UID PID PPID C STIME TTY TIME CMD
ljm 1379 1377 0 Oct06 pts/3 00:00:00 -bash
ljm 20773 1379 0 10:34 pts/3 00:00:00 sh
ljm 20774 20773 0 10:34 pts/3 00:00:00 /bin/sh ./tst
ljm 20775 20774 0 10:34 pts/3 00:00:00 ps -f
$
이제 sh
설명하겠습니다 tst
.
답변2
그렇다면 Shebang 없이 스크립트를 어떻게 실행합니까?
파일(예: tst)로 가져오면 실행도 불가능합니다.
source tst
. tst
(이것들은 buitins입니다 -> help source
)
또는
bash tst
이는 다음과 유사합니다.
bash -c 'string of commands aka script'
이러한 언어 해석기와 "명령 스트림"의 매칭은 Perl, sed 및 awk에서도 다양한 방식으로 사용됩니다.