파일이 있는 경로에 있는 파일에 액세스하려면 스크립트를 실행해야 합니다.
예: /home/me/folder/script.sh
파일에 액세스할 스크립트가 있습니다 /home/me/folder/myfile
. 파일이 스크립트와 동일한 경로에 있으므로 myfile
전체 경로가 아닌 이름만 사용했습니다.
하지만 다음과 같이 실행하면 /tmp/
:
/tmp$ /home/me/folder/script.sh
그것은 나에게 다음을 제공합니다:
myfile: No such file or directory
그렇다면 스크립트에서 파일이 스크립트 자체와 동일한 경로에 있다고 어떻게 말할 수 있습니까?
답변1
모든 경우를 알 수는 없지만 일반적으로 (항상 그런 것은 아님) 쉘이 검색하도록 하는 대신 경로로 스크립트를 실행할 때 스크립트 $PATH
경로는 에 있습니다 $0
. 그런 다음 dirname "$0"
또는 를 사용하여 ${0%/*}
경로를 얻을 수 있습니다.
답변2
어때요 $(dirname "$0")/myfile
?
답변3
나는 보통 스크립트 시작 부분에서 다음과 같은 작업을 수행합니다.
SCRIPTDIR=$(dirname "$0")
또는 (상대 경로 이름 대신) 스크립트 디렉터리의 전체 경로 이름을 얻으려면 다음을 수행하십시오.
SCRIPTDIR=$(cd $(dirname "$0") && pwd)
그런 다음 ${SCRIPTDIR}
필요한 곳에 인용하면 됩니다.