将目录的快捷方式(软链接)添加到全局PATH,以便可以从任何地方访问它

时间:2014-05-10 00:17:49

标签: bash ubuntu path sh symlink

我试图将所有符号链接放在一个目录中(我将调用此符号链接目录)。我已导出该目录的路径并将其放在我的.bashrc文件中。 executable applications的符号链接正常运行,但我很难为我的目录制作symlinks。这就是我的尝试。

ln -s ~/mydir/ m 

其中m应该是mydir目录的符号链接。

仅当我在symlinks目录中时才有效。尝试cd m甚至只是m在该目录之外无法工作。我明白了: -

bash: cd: m: No such file or directory

好的,我想也许PATH无法识别directory路径。所以我尝试创建一个bash脚本。

#!/bin/sh
cd ~/mydir/

试过这个,m ...... permission denied。好的,我想到了chmod +x m那个文件。当我像m那样运行那个脚本时,什么也没有。我试过./m,但仍然没有。

我几乎要失去理智去完成这么简单的任务。

1 个答案:

答案 0 :(得分:4)

PATH用于查找命令,我认为命令应该是文件的文件或符号链接。

所以,cd m并不像这里那样工作,命令是" cd" (不是m)。查找" m"在PATH中不会发生。

只是m不能像" m"在PATH中找到的是指向目录而不是文件的链接。您可以尝试创建另一个" m"它指向一个文件并将其放在PATH中的一个目录中,当你只运行m时它将被识别。

您创建的脚本确实有效,除了cd现在在新shell中发生并且在脚本结束时丢失。您可以通过在脚本中放入ls之后检查这一点。

有几种方法可以实现您想要做的事情。

一种选择是使用CDPATH变量。这是cd命令的搜索路径。查看man bash了解详细信息,但基本上,您需要做的就是将符号链接目录添加到CDPATH。

export CDPATH=~/symlinks:$CDPATH
cd m   ## will cd to linked directory

或者,您可以创建别名或函数,并将其放在.bashrc或其他源文件中。

alias m="cd ~/mydir"

m() {
    cd ~/mydir
}

现在你可以输入m来cd到mydir