나는 pip(Python 패키지 관리자) 설치를 "놀고" 장난치고 있었습니다. 어쨌든, 내 시스템에서는 /bin/pip
그것이 하드 링크 /usr/bin/pip
(또는 그 반대로, 하드 링크가 어떤 파일이 원본인지 모른다고 들었기 때문에) 였다는 것이 밝혀졌습니다 .
$ realpath /bin/pip /usr/bin/pip
/usr/bin/pip
/usr/bin/pip
결과는 realpath
나를 혼란스럽게 만들었습니다. 어떤 파일이 원본인지 모르는 경우 for 대신 해당 파일이 realpath
표시되는 이유는 무엇입니까 ?/usr/bin/pip
/bin/pip
/bin/pip
나는 그 중 하나가 다음과 같은 이유로 하드 링크일 수 있다는 것을 알고 있습니다.
$ stat -c "%n is a %F pointing to inode %i, which has %h hard link(s)" /bin/pip /usr/bin/pip
/bin/pip is a regular file pointing to inode 152837, which has 1 hard link(s)
/usr/bin/pip is a regular file pointing to inode 152837, which has 1 hard link(s)
혹시라도 내 컴퓨터가 CentOS 7을 실행하고 있고 realpath 명령은 GNU coreutils 8.22에서 온 것입니다.
- - - - 편집하다- - - -
실제로 /bin은 일반 디렉토리인 /usr/bin에 대한 심볼릭 링크입니다.
$ ls -ld /bin /usr/bin
lrwxrwxrwx. 1 root root 7 May 15 12:49 /bin -> usr/bin
dr-xr-xr-x. 2 root root 53248 Jul 13 18:44 /usr/bin
답변1
나는 이것을 테스트했지만 나에게는 그런 일이 발생하지 않습니다. 나는 (제안된 대로) realpath
해당 문제가 해결되었기 때문에 이것이 어딘가의 심볼릭 링크 때문이라고 생각합니다 .
노력하다:
ls -li /bin/pip /usr/bin/pip
두 디렉터리 항목이 동일한 inode/파일을 참조하는지(직접 또는 간접적으로) 다시 확인해야 합니다.
지금 시도해보세요:
ls -ld /bin /usr/bin
그러면 두 디렉터리( d
첫 번째 열)가 모두 표시됩니다. 그 중 하나(거의 확실히)가 해당 열에 /usr/bin
나타나면 l
이는 심볼릭 링크이며, 이는 현재 보고 있는 동작을 설명합니다( realpath
앞서 언급한 심볼릭 링크 해결).
최종 설명: 둘 중 하나가 /bin
다른/usr/bin
것에 대한 심볼릭 링크 인 경우 realpath
심볼릭 링크는 대상으로 이동하고 해당 대상을 실제 경로로 사용합니다.
GNU realpath
(다른 모든 항목은 아님)에는 이 --no-symlinks
옵션이 있습니다. 이를 사용하면 원래 기대했던 결과를 얻을 수 있습니다.