나는 bash
스크립트에서 일부 사람들이 다른 방법을 사용한다는 것을 알았습니다.오두막내가 내 자신의 꼭대기에 두는 데 익숙한 것.
누군가 이 둘의 차이점을 단순화할 수 있습니까? 나는 #!/bin/bash
항상 그것을 사용합니다.
#!/bin/bash
#!/usr/bin/env bash
답변1
#!/usr/bin/env bash
.NET에서 먼저 발견된 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 버전으로 스크립트가 실행될 수 있습니다.