이 두 bash 환경의 차이점은 무엇입니까?

이 두 bash 환경의 차이점은 무엇입니까?

bash나는 스크립트 의 경우 어떤 사람들은 다른 스크립트를 사용한다는 것을 알았습니다.셰르본나 자신 위에 그것을 얹는 데 익숙한 사람에게.

누군가 이 둘의 차이점을 단순화할 수 있습니까? 나는 #!/bin/bash이것을 항상 사용합니다.

#!/bin/bash
#!/usr/bin/env bash

답변1

스크립트의 결과는 #!/usr/bin/env bash에서 먼저 사용됩니다 $PATH.

bash는 일반적으로 위치하지만 /bin/bash어떤 경우에는 그렇지 않습니다(다른 운영 체제). 또 다른 잠재적인 용도는 여러 개의 bash 셸이 설치된 경우입니다(예: 대체 위치에 최신 버전 /usr/local/bin/bash).

#!/usr/bin/env bash유용성을 활용하는 일을 하는 것 입니다 env.
env유틸리티는 일반적으로 프로그램이 호출될 때 환경을 조작하는 데 사용됩니다(예: env -i someprog환경을 깨끗하게 지우기). 그러나 실행할 프로그램 이외의 인수를 제공하지 않으면 그림과 같이 지정된 프로그램이 실행됩니다 $PATH.


여기에는 장점과 단점이 모두 있습니다.

장점 앞서 언급했듯이, bash가 다른 위치에 설치되어 있거나 bash가 스크립트가 수행하려는 작업을 지원하기에는 너무 오래된 경우 /bin/bash스크립트를 이식 가능하게 만듭니다 .

단점은 예측할 수 없는 동작이 발생할 수 있다는 것입니다. 당신은 사용자의 결정에 달려 있기 때문에 $PATH이로 인해 스크립트가 예상하는 것과 다르게 동작하는 bash 버전을 사용하여 스크립트가 실행될 수 있습니다.

관련 정보