명령의 정식 경로를 가져옵니다.

명령의 정식 경로를 가져옵니다.

특정 명령에 대한 정식 경로가 필요한 스크립트를 작성 중입니다. 실제 명령에 대한 심볼릭 링크가 있을 수 있으므로 readlink -f표준 경로를 가져오곤 했습니다. 그러나 나는 내가 정말로 원하는 것을 얻지 못하고 있습니다 readlink -f. 다음 예를 들어 설명하겠습니다.

/home/user/Documents 현재 디렉토리가 다음과 같다고 가정합니다. 경로를 얻으려고 하면 다음과 같은 결과가 나타납니다.sleepreadlink -f

/home/user/Documents/sleep

내가 정말 원하는 건/bin/sleep

답변1

readlink -f "$(type -P sleep)"

또는 성능 중심인 경우:

cpath="$(type -P sleep)"; [ ! -L "$cpath" ] || cpath="$(readlink -f "$cpath")"

대신 (기존)을 사용하면 존재하지 않는 파일을 작업할 때 사고를 readlink -e피할 수 있습니다 .readlink -f

두 번째 예에서는 반환된 경로가 type -P정규 경로라고 가정합니다. 즉, 경로에 비정규 구성 요소가 없다고 가정합니다.

관련 정보