CentOS 7에서 실행되는 쉘 스크립트를 작성하기 시작했습니다. 어떤 통역사를 호출해야 하며, shebang 라인은 어떤 모습이어야 합니까?
나는 이것을 시도했습니다 :
#!/bin/sh
하지만 을 입력하면 cd /bin
수백 ls -al
개의 하위 디렉토리가 나타나고 그 중 어느 sh
것을 사용해야 합니까? 이 스크립트는 일부 Maven 명령을 실행합니다.
답변1
실제로 CentOS 7에서는 대부분의 Linux 배포판에서 제공되는 기본 셸인 /bin/sh
심볼릭 링크입니다 ./bin/bash
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 9 febr. 08:21 /bin/sh -> bash
(위 명령이 을 반환하면 No such file or directory
당신 말이 맞습니다. 문제가 있을 것입니다. 그런 다음 실행하여 which sh
올바른 경로를 알 수 있습니다)
따라서 귀하의 출력이 내 것과 동일하면 #!/bin/sh
및를 사용하는 #!/bin/bash
것이 동일합니다.
대안으로 다음 shebang을 사용할 수 있습니다: #!/usr/bin/env sh
또는 #!/usr/bin/env bash
. 이 경우 sh
설정된 위치나 위치에 관계없이 PATH에서 사용 가능한 첫 번째 항목 또는 무엇이든 실행됩니다. 이식성에 편리할 수 있지만 PATH에 지정된 실행 파일이 두 개 이상 있으면 보안 문제가 발생할 수 있다는 점에 유의하세요.bash
sh
/bin
/usr/bin
sh
답변2
원하는 통역사(bash, csh, zsh, sh, perl 또는 기타 통역사)를 호출하도록 할 수 있습니다.
#!/bin/sh
POSIXly 정확하며 실행되어야 합니다.
의 출력은 무엇입니까 ls /bin | grep s
?
또한 파일 권한을 확인하고 싶을 수도 있습니다. 내가 첫 번째 스크립트( )를 작성할 때 이로 인해 죽었습니다 chmod +x ./myscript.sh
.