상대 경로 이름을 사용하여 소프트 링크를 만드는 방법이 있습니까? (기본 경로에 상대적이거나 절대적인 경로가 아님)

상대 경로 이름을 사용하여 소프트 링크를 만드는 방법이 있습니까? (기본 경로에 상대적이거나 절대적인 경로가 아님)

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/

관련 정보