"./command"와 "bash 명령"의 차이점은 무엇입니까

"./command"와 "bash 명령"의 차이점은 무엇입니까

한 줄만 포함하는 간단한 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입니다.

관련 정보