디렉터리를 루트 디렉터리에 연결하면 다음 오류가 발생합니다.
$ ln -s ~/inbox/ /
$ ln: //: Is a directory
Bash는 /를 추가하여 디렉토리 경로를 자동 완성합니다. 나는 탈출을 시도했지만 소용이 없었다.
$ ln -s ~/inbox /
그래도 작동합니다. 왜 이런거야?
답변1
존재하다경로명 확인/
, 후행과 동등한 후행을 가집니다 /.
. 즉, 이 경우에는 ~/inbox/
동등합니다 . ~/inbox/.
따라서 명령은 루트 디렉터리에서 호출되는 링크를 ln
생성하려고 시도합니다 (놀랍지도 않게 실패합니다)..
/
Zsh는 디렉토리를 완성한 후 키를 누르면 Space후행을 제거합니다 (그렇게 구성하지 않은 경우). bash가 이것을 할 수 있는지 나는 모른다.
답변2
이것이 당신이 달려온 것입니까?
Is a directory
EISDIR
운영 체제 에서 오류를 인쇄하는 것 같습니다 . 이는 두 가지 방법으로 발생할 수 있습니다.
디렉터리를 가리키는 기존 기호 링크를 덮어써 보십시오.
$ cd $(mktemp -d)
$ mkdir dir
$ ln -s dir dir # this creates dir/dir
$ ln -s dir dir # this fails, because dir/dir already exists
ln: failed to create symbolic link `dir/dir': File exists
디렉토리에 대한 하드 링크를 만들어 보십시오.
$ cd $(mktemp -d)
$ mkdir dir
$ ln dir dirlink
ln: `dir': hard link not allowed for directory
이것이 당신이 실행하고 있는 것이라면 type ln
무엇이 인쇄될 것인가 alias ln
?