sudo를 사용하여 스크립트를 호출하면 shebang을 무시하고 다른 셸에서 스크립트를 실행합니다. 테스트를 위해 다음을 포함하는 스크립트 (test.sh)를 만들었습니다.
#/bin/bash
echo "BASH is: $BASH"
echo "actual shell is: `readlink /proc/$$/exe`"
먼저 sudo없이 스크립트 를 호출합니다 .
$ ./test.sh
BASH is: /bin/bash
actual shell is: /bin/bash
그런 다음 sudo로 스크립트 를 호출합니다 .
$ sudo ./test.sh
BASH is:
actual shell is: /bin/dash
나는 이것을 기대하지 않았을 것이다. 이것은 정상적인 동작입니까?
참고 : Ubuntu (14.04)를 사용하고 있으며 기본 셸 / bin / sh 는 dash에 대한 심볼릭 링크 입니다.
당신의 shebang은 shebang이 아닙니다. 그것은 단지 그녀, 강타를 놓친 것입니다.
#!/bin/bash
수정 된 예 :
$ ./test.sh
BASH is: /bin/bash
actual shell is: /bin/bash
$ sudo ./test.sh
BASH is: /bin/bash
actual shell is: /bin/bash
$ cat ./test.sh
#!/bin/bash
echo "BASH is: $BASH"
echo "actual shell is: `readlink /proc/$$/exe`"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다