다른 경로에서 스크립트를 실행하고 스크립트 경로를 아는 방법은 무엇입니까?

다른 경로에서 스크립트를 실행하고 스크립트 경로를 아는 방법은 무엇입니까?

파일이 있는 경로에 있는 파일에 액세스하려면 스크립트를 실행해야 합니다.

예: /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}필요한 곳에 인용하면 됩니다.

관련 정보