명령의 표준 경로 가져오기

명령의 표준 경로 가져오기

특정 명령의 정식 경로가 필요한 스크립트를 작성 중입니다. 실제 명령을 가리키는 심볼릭 링크가 있을 수 있으므로 readlink -f정식 경로를 가져오는 데 사용합니다. 하지만 실제로 원하는 것을 얻지 못했습니다 readlink -f. 다음 예를 통해 설명하겠습니다.

내 현재 디렉터리가 다음과 같다고 가정해 보겠습니다. with /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정규 경로라고 가정합니다. 즉, 경로에 비정규 구성 요소가 없다고 가정합니다.

관련 정보