ln://:이 디렉토리가 되는 이유는 무엇입니까?

ln://:이 디렉토리가 되는 이유는 무엇입니까?

디렉터리를 루트 디렉터리에 연결하면 다음 오류가 발생합니다.

$ ln -s ~/inbox/ /
$ ln: //: Is a directory

Bash는 /를 추가하여 디렉토리 경로를 자동 완성합니다. 나는 탈출을 시도했지만 소용이 없었다.

$ ln -s ~/inbox /

그래도 작동합니다. 왜 이런거야?

답변1

존재하다경로명 확인/, 후행과 동등한 후행을 가집니다 /.. 즉, 이 경우에는 ~/inbox/동등합니다 . ~/inbox/.따라서 명령은 루트 디렉터리에서 호출되는 링크를 ln생성하려고 시도합니다 (놀랍지도 않게 실패합니다)..

/Zsh는 디렉토리를 완성한 후 키를 누르면 Space후행을 제거합니다 (그렇게 구성하지 않은 경우). bash가 이것을 할 수 있는지 나는 모른다.

답변2

이것이 당신이 달려온 것입니까?

Is a directoryEISDIR운영 체제 에서 오류를 인쇄하는 것 같습니다 . 이는 두 가지 방법으로 발생할 수 있습니다.

디렉터리를 가리키는 기존 기호 링크를 덮어써 보십시오.

$ 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?

관련 정보