gpt4 book ai didi

bash - 符号链接(symbolic link)在创建后立即损坏

转载 作者:行者123 更新时间:2023-11-29 08:41:50 25 4
gpt4 key购买 nike

我下载了 linux Tor Browser 包,它是一个独立的文件夹。我创建了一个指向运行脚本的符号链接(symbolic link):

$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser

但是,链接在创建时就断开了。我所做的只是运行该命令,没有别的,它被破坏了。我做了 ls 并得到:

lrwxrwxrwx 1 synful synful 28 Jul 18 21:52 torbrowser -> torbrowser/start-tor-browser

...这很奇怪,因为 torbrowser/start-tor-browser 有 755 个权限。另外,我运行了 file:

$ file ~/bin/torbrowser
bin/torbrowser: broken symbolic link to `torbrowser/start-tor-browser'

我制作了一个新的 bash 脚本和一个指向它的符号链接(symbolic link)来测试它,没有出现这样的问题。我不确定为什么它只发生在 start-tor-browser 上。它有正常的权限,只是一个普通的 bash 脚本(即使根据文件命令)。

...有什么想法吗?

最佳答案

重要的是要知道这一点

ln -s SOURCE TARGET

创建一个名为 TARGET 的符号链接(symbolic link),它以符号方式链接到 string SOURCE。如果SOURCE是相对路径(即不以/开头),则相对于TARGET所在的目录进行解释中。如果是绝对路径,那就是绝对路径。如果它是一个不能是路径的字符串,或者包含一个不存在的路径或文件,或者不是有效的路径字符串,则不管。 ln -s 不检查 SOURCE 是否存在或什至是有效路径。您几乎可以在 dirent 中存储任何您想要的短字符串。

所以当你这样做的时候:

$ ln -s torbrowser/start-tor-browser ~/bin/torbrowser

你正在做的,大致是:

  1. bin 子目录中创建一个名为 torbrowser 的目录条目。
  2. 使该新目录条目成为(相对)路径的符号链接(symbolic link)(符号链接(symbolic link))torbrowser/start-tor-browser

新的符号链接(symbolic link)是一个循环。 ~/bin/torbrowser 链接到 ~/bin/torbrowser/start-tor-browser,这意味着您必须遵循符号链接(symbolic link)才能解析符号链接(symbolic link)。如果您尝试使用它,您会看到:

$ cat ~/bin/torbrowser
cat: /home/joshlf13/bin/torbrowser: Too many levels of symbolic links
$

有时 - 通常,甚至 - 符号链接(symbolic link)到相对路径的能力非常方便。一个常见的用途是去掉版本号:

$ ln -s apps/my_fancy_app_v2.63.1 apps/my_fancy_app

现在,我不仅可以调用 my_fancy_app 而无需记住它的版本字符串,我还可以将整个文件夹移动到别处,而不会破坏符号链接(symbolic link):

$ mv apps /usr/local/apps

但其他时候——就像在你的例子中,我认为——你需要符号链接(symbolic link)到一个绝对路径。

至于权限,符号链接(symbolic link)总是有lrwxrwxrwx权限,因为文件操作实际使用的权限是对真实文件的权限。 (你可以认为这意味着任何人都可以访问符号链接(symbolic link),但事实并非如此:他们还需要对他们需要访问的任何目录的读取权限。更准确地说,任何可以看到符号链接(symbolic link)的人都可以看到它的名称指向,即使他们无权访问具有该名称的文件。

关于bash - 符号链接(symbolic link)在创建后立即损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17737065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com