pwd를 기준으로 사용해 보았지만 작동하지 않습니다.
현재 비밀번호가 대상 경로 및 원래 경로(링크를 생성해야 하는 경로)와 다릅니다.
홈 디렉토리를 모르기 때문에 홈 디렉토리와 관련된 경로 이름을 사용할 수 없습니다. 절대 경로 이름은 필요하지 않습니다.
상대 경로 이름을 사용하여 소프트 링크를 만드는 방법은 무엇입니까?
답변1
상대 심볼릭 링크는 상위 디렉터리에 상대적이며 프로세스의 현재 디렉터리나 사용자의 홈 디렉터리와 아무 관련이 없습니다.
예를 들어 가 /some/dir/link
에 대한 심볼릭 링크 인 경우 현재 또는 홈 디렉터리가 무엇이든 관계없이 ( 자체가 심볼릭 링크가 아닌 경우 ) ../foo/bar
에 대한 심볼릭 링크입니다 ./some/dir/../foo/bar
/some/foo/bar
/some/dir
bin/ls
현재 디렉토리와 관련된 파일(예: 현재 디렉토리 /home/stephane
의 파일 ) 에 대한 새 심볼릭 링크를 생성하려면 다음을 수행할 수 있습니다(POSIX와 유사한 쉘 또는 에서 fish
):
ln -s -- "$PWD/bin/ls" /some/dir/link
그러면 (에 대한) 절대 심볼릭 링크가 생성됩니다 /home/stephane/bin/ls
. 상대 심볼릭 링크를 만들려면 다음이 필요합니다.
ln -s ../../home/stephane/bin/ls /some/dir/link
(그 자체 /some
가 /some/dir
심볼릭 링크가 아니라고 가정)
GNU에는 이 경로를 계산하는 데 도움이 되는 옵션이 ln
있습니다 -r
.
ln -rs bin/ls /some/dir/link
(이렇게 하면 동일한 심볼릭 링크가 생성됩니다 ../../home/stephane/bin/ls
).
답변2
심볼릭 링크에 상대 경로를 사용할 수 있습니다
bb
예를 들어(현재 작업 디렉터리에 상대적으로 위치한 ../../bb
폴더 에서 다음 폴더로 이동하려고 합니다 .mylink
ln -s ../../bb/ mylink
$ ls -lsa mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 15:51 mylink -> ../../bb/
관련 폴더에 mylink가 있는 또 다른 예pwd
mkdir ../../tst
$ ln -s ../../bb/ ../../tst/mylink
$ ls -lsa ../../tst/mylink
0 lrwxrwxrwx 1 user user 9 Apr 18 16:08 ../../tst/mylink -> ../../bb/