[혜나♡ë™ì°¬
차례:
이 문자 시퀀스 (
#!
)를 shebang 이라고하며 나머지 파일을 구문 분석하는 데 사용할 인터프리터를 운영 체제에 알려주는 데 사용됩니다.
Shebang 통역 지시어
Shebang 인터프리터 지시문은 다음 형식을 따릅니다.
#!interpreter
- 지시문은 스크립트의 첫 번째 행이어야합니다. 지시문은 shebang
#!
시작해야합니다#!
shebang 문자 다음의 공백은 선택 사항입니다. 해석기는 이진 파일의 전체 경로입니다 (예:/bin/sh
,/bin/bash
). 통역 인수는 선택 사항입니다.
예:
-
#!/bin/bash
-bash
를 사용하여 파일을 구문 분석합니다.#!/usr/bin/env perl
-env
명령을 사용하여perl
실행 파일의 경로를 찾습니다.#!/usr/bin/python
python
바이너리를 사용하여 파일을 실행합니다.
Bash 스크립트에서 Shebang 사용
shebang이 지정되지 않고 Bash 스크립트를 실행중인 사용자가 다른 쉘을 사용중인 경우 해당 쉘에서 사용하는 기본 인터프리터에 의해 스크립트가 구문 분석됩니다. 예를 들어,
bash
의 기본 인터프리터는
bash
이고
zsh
경우
sh
입니다. 스크립트가 항상 Bash로 해석되도록하려면 shebang을 사용하여 실행 파일 경로를 지정해야합니다.
Shebang 지시문을 사용하고 통역사를 설정하는 두 가지 방법이 있습니다.
-
bash 바이너리의 절대 경로 사용:
#!/bin/bash
env
유틸리티 사용:#!/usr/bin/env bash
두 번째 방법을 사용하면 사용자의
$PATH
환경 변수에서
bash
실행 파일을 검색 할 수 있다는 이점이 있습니다.
bash
둘 이상의 경로가 있으면 첫 번째 경로가 스크립트에서 사용됩니다.
첫 번째 옵션을 사용하여 Bash 쉘 공급에 옵션을 추가 할 때 옵션을 인터프리터에 전달하십시오. 예를 들어, 디버그 모드에서 스크립트를 실행하려면
#!/bin/bash -x
.
env
메소드를 사용하는 경우
set
을 사용하여 옵션을 선언해야합니다. 디버그 모드를 사용하려면 shebang 행 뒤에
set -x
추가하십시오.
스크립트 예
shebang을 사용하여“Hello, World”를 인쇄하는 간단한 스크립트를 작성해 봅시다. 텍스트 편집기를 열고 다음 줄을 붙여 넣습니다.
nano hello_world
hello_world
#!/bin/bash echo "Hello, World"
명령 행에서 인터프리터를 지정하지 않고 스크립트를 실행할 수 있으려면 파일을 실행 파일로 만들어야합니다.
chmod +x hello_world
이제
./
다음에 스크립트 이름을 입력하여 스크립트를 실행할 수있는 경우:
./hello_world
Shebang 재정의
어떤 이유로 Shebang 행에 설정된 인터프리터를 대체하려면 원하는 쉘을 명시 적으로 지정하여 스크립트를 실행해야합니다.
예를 들어
bash
쉘을 사용하여 Shebang 행에
#!/bin/sh
지정된 스크립트를 실행하려면 다음을 입력하십시오.
bash hello_world
쉘 인터프리터를 재정의하는 것은 스크립트의 예기치 않은 동작으로 이어질 수 있으므로 바람직하지 않습니다.
결론
이제 Shebang이 무엇이며 Bash 스크립트에서이를 사용하는 방법에 대해 잘 이해하고 있어야합니다.
bash 터미널