Mac OS X에서 배치(.command) 파일의 현재 위치를 지정하는 방법

Mac OS X에서 배치(.command) 파일의 현재 위치를 지정하는 방법

작업을 수행하기 위해 두 번 클릭하는 배치 파일(.command)이 있습니다. 동일한 폴더에 있는 파일에 종속되어 있지만 .command 파일을 두 번 클릭하면 실행되고 현재 위치가 /~라고 가정합니다.

관련 자산을 참조할 수 있도록 스크립트 자체에서 .command 파일의 위치를 ​​어떻게 찾거나 지정합니까?

답변1

bash를 사용하는 경우(예: 스크립트가 로 시작하는 경우 #!/bin/bash) $BASH_SOURCE를 사용하여 스크립트의 파일 이름을 가져올 수 있습니다. 여기에서 해당 디렉토리를 얻을 수 있습니다.

mydir="$(dirname "$BASH_SOURCE")"

...그런 다음 이를 사용하여 스크립트와 관련된 파일을 찾습니다. 예 cp "$mydir/fileInTheSameFolder" /tmp를 들어 여기에서 했던 것처럼 항상 큰따옴표를 사용하세요.

이는 상대 경로일 수 있습니다. 예를 들어 스크립트가 를 사용하여 대화형 셸에서 실행된 경우 ./scriptname.command"."으로 표시됩니다. 스크립트 CD가 다른 곳에 있지 않으면 문제가 되지 않지만, 전체 경로가 필요한 경우 다음을 대신 사용할 수 있습니다.

mydir="$(cd "$(dirname "$BASH_SOURCE")" && pwd)" || {
    echo "Error getting script directory" >&2
    exit 1
}

또는 cd스크립트 시작 부분에 있는 스크립트 디렉터리로 이동할 수도 있습니다.

cd "$(dirname "$BASH_SOURCE")" || {
    echo "Error getting script directory" >&2
    exit 1
}

관련 정보