pwd를 기준으로 사용해 보았지만 작동하지 않습니다.
내 현재 비밀번호가 대상 경로 및 원래 경로(링크를 생성해야 하는 위치)와 다릅니다.
홈 디렉토리를 모르므로 홈 상대 경로 이름을 사용할 수 없습니다. 절대 경로 이름은 필요하지 않습니다.
상대 경로 이름을 사용하여 소프트 링크를 어떻게 생성합니까?
답변1
상대 심볼릭 링크는 상위 디렉터리를 기준으로 하며 프로세스의 현재 디렉터리나 사용자의 홈 디렉터리와는 관련이 없습니다.
예를 들어, 가 /some/dir/link
에 대한 심볼릭 링크라면 현재 또는 홈 디렉터리가 무엇인지에 관계없이 if 자체는 심볼릭 링크가 아닌 에 대한 ../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/