CentOS 7 쉘 스크립트 인터프리터

CentOS 7 쉘 스크립트 인터프리터

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에 지정된 실행 파일이 두 개 이상 있으면 보안 문제가 발생할 수 있다는 점에 유의하세요.bashsh/bin/usr/binsh

답변2

원하는 통역사(bash, csh, zsh, sh, perl 또는 기타 통역사)를 호출하도록 할 수 있습니다.

#!/bin/shPOSIXly 정확하며 실행되어야 합니다.

의 출력은 무엇입니까 ls /bin | grep s?

또한 파일 권한을 확인하고 싶을 수도 있습니다. 내가 첫 번째 스크립트( )를 작성할 때 이로 인해 죽었습니다 chmod +x ./myscript.sh.

관련 정보