스크립트를 실행하는 데 사용할 쉘

스크립트를 실행하는 데 사용할 쉘

몇 가지 핵심 사항을 이해하고 싶습니다. Shebang 줄(#!/bin/bash) 없이 bash 구문으로 작성된 스크립트가 있고 기본 쉘은 tcsh입니다.

  • 파일에 실행 권한을 부여하고 파일의 전체 경로를 입력하여 기본 셸(tcsh)에서 실행하면 올바르게 실행됩니다. shebang 줄을 입력하지 않고 어떻게 tcsh에서 스크립트를 올바르게 실행할 수 있습니까?
  • 기본 쉘 tcsh의 동일한 파일에 대해 source 명령을 사용하여 실행하면 구문 오류가 발생합니다(shebang bash 라인을 사용했음에도 불구하고). 이유는 무엇입니까?

몇 가지 실험 후에 다음을 발견했습니다. 감사합니다. 이것이 맞는 것 같습니다. 몇 가지 실험을 하여 다음을 달성했습니다. - 소스(점 연산자는 bash에서만 별칭임) 명령을 사용하여 파일을 실행합니다. - 실행하지 않고도 실행합니다. 허가 - shebang 라인과 관계없이 현재 쉘을 이용하여 실행 - shebang 라인이 존재하고 파일 이름(전체 경로)을 입력하여 파일을 실행하는 경우(여기서 실행 권한이 필요함), shebang 라인에서 쉘을 사용하여 파일을 실행합니다. Shebang 라인이 존재하지 않고 이름으로 실행되는 경우 현재 쉘이 무엇이든 상관없이 내 경우에는 항상 bash가 사용됩니다. 왜인지는 모르겠습니다. /bin 파일에서 bash가 먼저 나오기 때문인가요? ? ? ? ? ? 나한테 확인해 줄래?

답변1

실행 가능한 스크립트에 shebang 줄이 없으면 에 의해 실행됩니다 /bin/sh. 다음을 사용하여 실행하는 경우 source:

$ cat s.sh
echo "shell=$shell"
echo "BASH=$BASH"
$ ./s.sh
shell=
BASH=/usr/local/bin/bash
$ tcsh
[~]% ./s.sh
shell=
BASH=/bin/sh
[~]% source s.sh
shell=/bin/tcsh
BASH: Undefined variable.

관련 정보