내 시스템 어딘가(문제는 어디에 있는지 모른다는 것)에 우선순위가 있는 심볼릭 링크가 있는데 bash
링크가 깨져서 작동하지 않습니다.
뿐만 아니라:
- 현재 디렉터리:
mysymlink
- 경로 어딘가(패키지에 의해 설치됨):
mysymlink
현재 디렉토리에서 실행하면 파일 시스템 어딘가에 있는 mysymlink
(깨진) 심볼릭 링크가 호출됩니다.mysymlink
현재 디렉토리에서 심볼릭 링크를 사용할 수 있도록 심볼릭 링크를 찾으려고 삭제합니다.
어떻게 찾을 수 있나요?
(편집) 구체적인 예:
명령 -v testcafe
/usr/local/bin/testcafe
ls -l /usr/local/bin/testcafe
ls: /usr/local/bin/testcafe에 액세스할 수 없습니다: 해당 파일이나 디렉터리가 없습니다
(노트:대상 경로를 삭제했습니다.실수로 인해)
이 심볼릭 링크(내 시스템 어딘가에서)를 어떻게 삭제할 수 있습니까?
답변1
command -v UTILITY
명령을 실행하면 쉘이 무엇을 실행하려고 하는지 보여줍니다 UTILITY
.
보도된 이후
/usr/local/bin/testcafe
그러나 이후에
ls: cannot access /usr/local/bin/testcafe: No such file or directory
이 작업을 시도하면 유틸리티의 보고된 위치가 셸에 의해 캐시되어 삭제되었다고 ls -l
믿게 됩니다 .testcafe
쉘의 캐시를 플러시하려면 다음을 사용하십시오 hash -r
(이 명령은 아무것도 인쇄하지 않음). 이렇게 하면 캐시가 플러시되고 쉘은 다음에 실행할 때 전체 경로 조회를 수행합니다 testcafe
.
답변2
어쩌면 당신은 시도해야 할 것입니다 (그렇다고 가정 ls
)아니요별칭; 그렇다면 다음으로 바꾸세요 /bin/ls
.)
ls -l $(which mysymlink)
which mysymlink
명령의 전체 경로가 제공되기 때문에 mysymlink
(예: 확장명 사용)$PATH
바꾸다)
이 명령을 시도해야 합니다외부포함하다 mysymlink
.
그런데 을 .
사용 $PATH
하여 확인할 수 있습니다 echo $PATH
. 그리고 현재 디렉터리를 디렉터리 안에 넣으면 $PATH
보안 위험이 발생할 수 있습니다.
ls: 접근할 수 없습니다
/usr/local/bin/testcafe
: 해당 파일이나 디렉터리가 없습니다
ls -dl /usr/ /usr/local/ /usr/local/bin/
그런 다음 해당 디렉토리 중 존재하지 않는 디렉토리를 확인하십시오 . (어쩌면 잊으셨을 수도 있습니다.)산일부 파일 시스템이 있거나 실수로 루트로 해당 디렉터리 중 일부를 삭제했습니다.)
물론 하나도 만들어 보세요ls -l /usr/local/bin/testcafe
(앨리어싱이나 재정의를 하고 있는 것 같으니 /bin/ls
대신 사용해 보세요 )ls
ls
이 심볼릭 링크(내 시스템 어딘가에서)를 어떻게 삭제할 수 있습니까?
먼저 그것을 찾아야합니다. 사용찾기(1)적절하게 (아마도와 함께 -lname
)
답변3
의 모든 디렉토리에서 끊어진 기호 링크를 찾으려면 PATH
다음을 사용하십시오 bash
.
IFS=: read -ra dirs <<<"$PATH"
find -L "${dirs[@]}" -type l -maxdepth 1
제거하려면 -delete
에 추가하세요 .find