한 줄만 포함하는 간단한 bash 스크립트 파일이 있습니다.
rvm gemset use --create 2.0.0@PRJ_NAME
이 스크립트를 실행하면:
./scriptname.sh
RVM에서 잘 알려진 오류 메시지를 받았습니다.
RVM is not a function, select.....
하지만 스크립트를 실행하면
bash scriptname.sh
모든 것이 잘되었습니다.
누군가 나에게 차이점을 설명해 줄 수 있습니까?
답변1
큰 차이가 있습니다.
testscript라는 다음 스크립트를 사용해 보겠습니다(해시뱅에서 볼 수 있듯이 /bin/ksh를 사용하도록 구성됨).
#!/bin/ksh
#im testscript
cd /proc/$$
file exe
먼저 ./로 실행해 보겠습니다.
$ ./testscript
exe: symbolic link to /bin/ksh93
이제 bash를 호출하세요.
$ bash testscript
exe: symbolic link to /bin/bash
차이점이 보이나요? 스크립트에서 사용하는 인터프리터는 두 번째 명령에서 변경되므로 스크립트가 무언가에 의존하는 경우케시스크립트가 다른 수단에 의존하는 경우뿐만 아니라 특정 코드에 대해서도 손상됩니다.세게 때리다특정 코드를 삭제한 다음 첫 번째 명령으로 해당 코드를 삭제합니다.
수행할 수 있는 다른 테스트는 두 가지 다른 실행에서 echo $PATH입니다.