디렉토리 심볼릭 링크에서 마지막 슬래시 유무의 차이

ln 명령을 써서 디렉토리의 심볼릭 링크를 만들 때 두 가지 방법이 있다.

$ ln -sf test noslash
$ ln -sf test/ slash

이렇게 생성한 심볼릭 링크를 ls -l 해 보면 다음과 같이 다르게 보인다.

noslash -> test
slash -> test/

ls -lF를 실행하면 다음과 같이 보인다.

noslash -> test/
slash -> test//

개인적으로 각 항목의 종류를 표시해 주는 ls -lF를 선호하는데 slash의 경우 ln에서 하나, ls에서 또 하나, 총 2 개의 슬래시가 끝에 보여서 보기가 싫다. 그래서 ln -s 명령을 사용할 때 자동완성을 한 다음 끝의 슬래시를 제거하고 심볼릭 링크를 생성하는 버릇이 생겼다.

이렇게 여분의 보기 싫은 슬래시가 더 보인다는 것 말고 별차이는 없다고 생각하고 있었는데, 둘 사이의 중요한 차이점을 아주 잘 설명하는 글을 찾았다. 슬래시가 없이 생성된 심볼릭 링크는 디렉토리 또는 파일 둘 다 될 수 있으나, 슬래시가 포함된 심볼릭 링크는 디렉토리밖에 될 수 없다.

$ rmdir test
$ echo test > test

이제 ls -lF를 실행하면 다음과 같은 결과를 볼 수 있다.

noslash -> test
slash -> test/

뭐 보이는 건 아직 똑같다. 그런데 noslash는 새로 만든 test 파일로 링크되어 있는 반면 slash의 링크는 깨져 있다. test가 더 이상 디렉토리가 아니기 때문이다.

$ cat noslash
test
$ cat slash
cat: slash: Not a directory

참고문헌

이 칸을 비워 두세요.