위치에 관계없이 다른 파일에 대한 경로가 포함된 스크립트를 사용하는 방법은 무엇입니까?

위치에 관계없이 다른 파일에 대한 경로가 포함된 스크립트를 사용하는 방법은 무엇입니까?

다른 디렉터리 내에 깊이 중첩된 특정 디렉터리에 스크립트가 저장되어 있습니다.

a/long/path/to/the/script.sh

더 쉽게 액세스할 수 있도록 데스크탑에서 스크립트에 대한 하드 링크를 만들었습니다.

그러나 스크립트에 프로그래밍된 다른 파일에 대한 경로는 데스크탑 하드 링크를 실행할 때 아무런 영향을 미치지 않습니다.

이제 "해당 파일이나 디렉터리가 없습니다."라는 오류가 발생합니다.

지저분해 보이기 때문에 이러한 파일에 대한 추가 심볼릭 링크를 만들고 싶지 않습니다.

어떻게 해야할지 모르겠습니다. 도와주세요.

답변1

스크립트가 상대 경로를 사용하여 파일 및/또는 디렉터리를 찾는 경우 해당 파일 및/또는 디렉터리를 찾으려면 현재 작업 디렉터리가 정확해야 합니다.

명령을 사용하여 현재 작업 디렉토리를 변경할 수 있습니다 cd. 파일의 첫 번째 명령이 cd스크립트가 실행할 것으로 예상되는 절대 경로로 디렉터리를 변경하는 명령인 경우 스크립트의 후속 경로는 정확합니다.

예를 들어:

#!/bin/bash

cd /some/path/where/we/expect/to/be || exit 1

# (rest of script here)

이렇게 하면 나머지 스크립트가 실행되기 전에 디렉토리가 변경됩니다(또는 이것이 가능하지 않은 경우 스크립트를 일찍 종료합니다).

여기에는 스크립트를 저장하기 편리한 위치에 배치할 수 있다는 추가 이점이 있습니다.

이 문제를 해결하는 또 다른 방법은 스크립트의 모든 경로를 절대 경로로 변경하는 것입니다.

관련 정보