UNIX 쉘 스크립트에서“#! / bin / sh”줄은 무엇을 의미합니까?
쉘 스크립트 튜토리얼을 살펴보고 다음 샘플 프로그램을 찾았습니다.
#!/bin/sh
clear
echo "HELLO WORLD"
!/bin/sh
주석에서 ' ' 를 언급하는 것이 어떤 의미인지 말해 줄 수 있습니까 ?
shebang 이라고하며 , 스크립트를 실행하는 데 어떤 인터프리터를 사용해야하는지 부모 쉘에 알려줍니다.
예 :
#!/usr/bin/perl <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.
주석으로 구현되어 해당 행에 나오는 모든 것이 지정된 인터프리터와 "관련되지"않습니다. 예를 들어, 모든 스크립팅 언어는로 시작하는 줄 #
이 주석 임을 이해하는 경향이 !/usr/bin/whatever
있으며, 특정 언어의 구문 오류 일 수 있는 부분 을 무시합니다 .
유닉스에서 프로그램을 실행하려고하면 (실행 가능한 비트가 설정된 프로그램) 운영 체제는 파일의 처음 몇 바이트를 봅니다. 이것들은 프로그램의 형식과 실행 방법을 결정하는데 사용될 수있는 소위 "매직 넘버"를 형성합니다.
#!
매직 번호 0x2321에 해당합니다 (아스키 테이블에서 찾아보십시오). 시스템이 마법 번호를 발견하면 텍스트 번호를 다루고 있음을 알고 다음 스크립트까지 읽습니다 \n
(한계가 있지만 atm을 피합니다). 통역사 (세방 후 첫 번째 인수)를 식별하면 통역사를 호출합니다.
다른 파일에도 마법 번호가 있습니다. 를 통해 비트 맵 (.BMP) 파일을 less
살펴보면 처음 두 문자가 BM
입니다. 이 매직 넘버는 파일이 실제로 비트 맵임을 나타냅니다.
이 스크립트가있는 파일이 실행 가능한 경우 hash-bang ( #!
)은 운영 체제에 스크립트를 실행하는 데 사용할 인터프리터를 알려줍니다. 이 경우 /bin/sh
예를 들어입니다.
자세한 내용 은 Wikipedia 기사 가 있습니다.
첫 번째 줄은 스크립트에 직접 (/ bin / sh run.sh와 달리 ./run.sh;) 실행하면 해당 프로그램 (이 경우 / bin / sh)을 사용하여 스크립트를 해석해야한다고 쉘에 알려줍니다.
또한 일반적으로 -e (오류 발생시) 인수를 전달하거나 다른 프로그램 (/ bin / awk, / usr / bin / perl 등)을 사용하여 인수를 전달할 수도 있습니다.
#!/bin/sh
또는 #!/bin/bash
당신이 첫 번째 줄에 사용하지 않는 경우 다음 시스템이 다른 명령으로 해당 스크립트의 모든 명령을 처리하기 때문에 스크립트의 첫 번째 줄 수있다. 첫 번째 #!/bin/sh
줄이면 모든 명령을 하나의 스크립트로 간주 ps
하고 파일 내부의 명령 이 아니라이 파일이 명령 으로 실행되고 있음을 나타냅니다.
./echo.sh
ps -ef |grep echo
trainee 3036 2717 0 16:24 pts/0 00:00:00 /bin/sh ./echo.sh
root 3042 2912 0 16:24 pts/1 00:00:00 grep --color=auto echo
참고 URL : https://stackoverflow.com/questions/7366775/what-does-the-line-bin-sh-mean-in-a-unix-shell-script
'IT' 카테고리의 다른 글
PostgreSQL- "IN"절의 최대 매개 변수 수? (0) | 2020.06.28 |
---|---|
x에서 y로 공변량 배열을 변환하면 런타임 예외가 발생할 수 있습니다 (0) | 2020.06.28 |
다른 디렉토리에서 git clone (0) | 2020.06.28 |
ES6 / 2015의 안전하지 않은 속성 액세스 및 조건부 할당 (0) | 2020.06.28 |
파이썬에서 표현식 0 <0 == 0이 False를 반환하는 이유는 무엇입니까? (0) | 2020.06.28 |