Linux 如何执行根文件夹中的链接

Linux 如何执行根文件夹中的链接

在 Windows 中,如果创建 .exe 文件或 .bat 的快捷方式,则该文件将在其自己的目录中运行,而不是在快捷方式所在的目录中,但在 Linux 中,指向脚本的链接在与链接所在的同一目录中运行,并且如果所述脚本依赖于其根目录中的文件,这会破坏所有内容,有没有办法在没有 shell 包装器或使用绝对路径的情况下解决这个问题?

我尝试了硬链接和软链接,但它们的结果相同。

答案1

你的观察是错误的。我无法谈论太多关于 Windows 的事情,但在 Linux 上,

指向在与链接相同的目录中运行的脚本的链接

并非如此。指向可执行文件的链接在程序启动的目录中运行。您可以使用以下代码轻松验证这一点:

ln -s /usr/bin/ls /tmp/ls
/tmp/ls

这将输出当前目录的内容,而不是/tmp

不清楚你说的“这会破坏一切”是什么意思。此外,/除非绝对必要,否则应避免放置文件。

答案2

我有一个指向/ImageStore已安装数据磁盘上的文件夹的软链接......

这:
$ linkpos="$(find /ImageStore -maxdepth 1 -printf "%l\n")"; ( cd $linkpos ; ls -l)

... 将列出该文件夹的内容。

以类似的方式,您可以从“$linkpos”中提取脚本路径,然后 cd 到该路径并执行该脚本。

您需要的上述信息位于中man bash/Parameter Exp在查看手册页时输入并按 ENTER。

相关内容