특정 명령에 대한 정식 경로가 필요한 스크립트를 작성 중입니다. 실제 명령에 대한 심볼릭 링크가 있을 수 있으므로 readlink -f
표준 경로를 가져오곤 했습니다. 그러나 나는 내가 정말로 원하는 것을 얻지 못하고 있습니다 readlink -f
. 다음 예를 들어 설명하겠습니다.
/home/user/Documents
현재 디렉토리가 다음과 같다고 가정합니다. 경로를 얻으려고 하면 다음과 같은 결과가 나타납니다.sleep
readlink -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
정규 경로라고 가정합니다. 즉, 경로에 비정규 구성 요소가 없다고 가정합니다.