我试图将所有符号链接放在一个目录中(我将调用此符号链接目录)。我已导出该目录的路径并将其放在我的.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
,但仍然没有。
我几乎要失去理智去完成这么简单的任务。
答案 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