有没有办法使用相对路径名创建软链接?(不是相对于主路径,也不是绝对路径)

有没有办法使用相对路径名创建软链接?(不是相对于主路径,也不是绝对路径)

我尝试使用相对于 pwd,但它不起作用。

我当前的密码与目标路径和原始路径(需要创建链接的位置)不同。

我不知道主目录,因此无法使用相对于主目录的路径名。不需要绝对路径名。

如何使用相对路径名创建软链接?

答案1

相对符号链接是相对于其父目录的,与任何进程的当前目录或任何用户的主目录无关。

例如, if/some/dir/link是到 的符号链接../foo/bar,那么它就是到 的符号链接/some/dir/../foo/bar/some/foo/barif/some/dir本身不是符号链接),无论您的当前目录或主目录是什么。

如果您想创建一个新的符号链接到相对于当前目录的文件(例如bin/ls当前/home/stephane目录中的文件),那么您可以执行以下操作(在类似 POSIX 的 shell 或 中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本身不是符号链接)

GNUln有一个-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/

相关内容