나는 당신에 따르면 이 셔뱅을 사용하는 것이 좋은 습관인지 알고 싶습니다.
#!/usr/bin/env bash
대신에
#!/bin/bash
이 기사의 사용을 옹호하는 것 같지만 /usr/bin/env
막상 사용해보면 회의적인 시각이 나타난다.
당신의 의견 것입니다?
답변1
실제로 는 #!/usr/bin/env
를 이해하는 거의 모든 시스템에 이식 가능합니다 #!
. .NET 어디에나 있을 수 있는 프로그램을 호출하는 데 유용한 관용어입니다 $PATH
. 인터프리터 경로를 하드 코딩한 경우 스크립트를 다른 시스템에 복사하면 작동하지 않을 수 있습니다.
#!/bin/sh
나의 일반적인 정책은 이식 가능한 sh
기능(즉, 최신 유니스에만 관심이 있는 경우 POSIX 기능만, 이전 Solaris 릴리스와 같은 이전 시스템에 관심이 있는 경우 Bourne 기능만) 만 사용하는 스크립트를 사용하는 것입니다 #!/usr/bin/env
.
단점은 #!/usr/bin/env
통역사에게 어떤 옵션도 전달할 수 없다는 것입니다. 일부 인터프리터의 경우 옵션을 지시문으로 지정하거나 두 번째 줄을 sh가 실행될 때 인터프리터를 호출하고 대상 인터프리터가 실행할 때 아무 작업도 수행하지 않는 이중 언어 조각으로 만들어 이 문제를 해결할 수 있습니다. 거기에일반적인 펄 관용구, 예를 들어 ( 전달하는 데 유용함 -T
).
답변2
env
바이너리의 위치가 다양할 수 있는 여러 시스템에서 스크립트를 사용할 경우에만 유용합니다. 스크립트가 단일 시스템이나 동종 네트워크에서만 사용되는 경우에는 필요하지 않습니다.