나는 bash
대본에서 어떤 사람들 은 내가 내 자신의 맨 위에 놓는 데 익숙한 것과 다른 shebang 을 사용한다는 것을 알았습니다.
누군가이 둘의 차이점을 단순화 할 수 있습니까? 나는 항상 #!/bin/bash
하나를 사용합니다 .
#!/bin/bash
#!/usr/bin/env bash
#!/usr/bin/env bash
에서 처음 발견 된 bash를 사용하는 스크립트 의 결과입니다 $PATH
.
bash는 일반적으로 /bin/bash
. 그렇지 않은 경우가 있습니다 (다른 운영 체제). 또 다른 잠재적 인 용도는 여러 개의 bash 셸이 설치된 경우입니다 (와 같은 대체 위치에있는 최신 버전 /usr/local/bin/bash
).
수행 #!/usr/bin/env bash
은 env
유틸리티 의 동작을 이용 합니다.
이 env
유틸리티는 일반적으로 프로그램을 호출 할 때 환경을 조작하는 데 사용됩니다 (예 : env -i someprog
환경 정리). 그러나 실행할 프로그램 이외의 인수를 제공하지 않으면에서 찾은 지정된 프로그램이 실행됩니다 $PATH
.
이 작업에는 장점과 단점이 모두 있습니다.
장점은 앞서 언급 한 바와 같이 bash가 다른 위치에 설치되어 있거나 /bin/bash
스크립트가 수행하려는 작업을 지원하기에는 너무 오래된 경우 스크립트를 이식 가능하게 만든다는 점 입니다.
단점은 예측할 수없는 동작이 발생할 수 있다는 것입니다. 사용자의 자비에 있기 때문에 $PATH
스크립트가 예상하는 것과 다른 동작을 가진 bash 버전으로 스크립트가 실행될 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다