%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%98%84%EC%9E%AC%20%EC%9C%84%EC%B9%98%EB%A5%BC%20%EC%A7%80%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
작업을 수행하기 위해 두 번 클릭하는 배치 파일(.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
}