심볼릭 링크(Symbolic Link)란?

다른 파일이나 디렉터리의 경로를 내용으로 갖는 특별한 파일로, 열면 그 경로를 따라간 곳이 사용된다. ln -s 원래 경로 링크 이름으로 만들며, ls -l에서는 맨 앞이 l이고 '링크 이름 -> 원래 경로'로 표시된다. 다른 파일 시스템이나 디렉터리도 가리킬 수 있지만, 원래 것을 지우거나 옮기면 따라갈 곳이 없는 끊어진 링크가 된다. 같은 inode를 가리키는 별명인 하드 링크와는 구별된다.

일본어 명칭: シンボリックリンク

심볼릭 링크(Symbolic Link)은(는) Linux와 커맨드 라인 기초 등 1개 분야의 연습 문제 1개에 나와요.

분야: Linux와 커맨드 라인 기초

만드는 법과 보이는 방식

ln -s /opt/tools/sim-2.3 /opt/tools/sim처럼 만들면, /opt/tools/sim을 열거나 cd했을 때 실제로는 /opt/tools/sim-2.3이 사용됩니다. ls -l에서는 'sim -> /opt/tools/sim-2.3'으로 표시되며, readlink나 realpath로 따라간 곳을 확인할 수 있습니다. 링크 자체의 퍼미션은 사용되지 않으며, 따라간 곳의 파일 권한으로 판단됩니다.

상대 경로와 절대 경로

링크의 내용에 상대 경로를 쓰면, 링크가 놓인 디렉터리를 기점으로 따라갑니다. 디렉터리째 다른 곳으로 옮겨도 관계가 유지되는 이점이 있지만, 링크만 옮기면 끊어져 버립니다. 절대 경로로 쓰면 링크를 어디로 옮겨도 같은 곳을 가리키지만, 가리키는 곳의 디렉터리 구성을 바꾸면 끊어집니다.

하드 링크와의 차이

하드 링크는 같은 inode를 가리키는 이름을 하나 더 늘리는 것으로, 원래 이름을 지워도 내용은 남습니다. 다만 같은 파일 시스템 안에서만 만들 수 있으며, 보통은 디렉터리에 대해서는 만들 수 없습니다. 심볼릭 링크는 경로를 기록하고 있을 뿐이므로 파일 시스템을 넘어서도, 디렉터리에 대해서도 만들 수 있지만, 원래 것이 사라지면 끊어진 링크가 됩니다.

자주 묻는 질문

심볼릭 링크는 어떤 상황에서 사용되나요?

도구의 버전을 전환하는 상황이 잘 알려져 있습니다. /opt/tools/sim을 최신 버전의 디렉터리로 향하게 해 두면, 사용자의 스크립트는 같은 경로 그대로 두고 링크를 다시 거는 것만으로 버전을 바꿀 수 있습니다. 공유 라이브러리의 libfoo.so에서 libfoo.so.1.2로의 이름 붙이기나, 큰 데이터를 다른 디스크에 두고 프로젝트 안에서 참조하는 경우에도 사용됩니다.

끊어진 링크는 어떻게 찾나요?

ls -l로 표시되는 가리키는 곳이 존재하지 않으면, 많은 환경에서 색이나 표시로 구별됩니다. GNU의 find에서는 find . -xtype l처럼 하면 따라갈 곳이 없는 심볼릭 링크를 나열할 수 있습니다. 끊어진 링크의 파일을 열려고 하면 'No such file or directory' 오류가 됩니다.

해설 속 심볼릭 링크(Symbolic Link)

심볼릭 링크(Symbolic Link)이(가) 나오는 문제 (1)

  1. 위의 명령을 순서대로 실행했을 때, 마지막 두 cat의 결과로 올바른 것은?

관련 용어

하드 링크(Hard Link) inode(아이노드) 셸(Shell) 슈퍼유저(Superuser) 시그널(Unix 시그널) 입출력 리다이렉션(I/O Redirection) 정규 표현식(Regular Expression) 파이프(|) 파일 권한(퍼미션) 환경 변수(Environment Variable)

용어집으로 돌아가기