shr*_*iek 1 bash ubuntu symlink path sh
我正在尝试将所有符号链接放在一个目录中(我将其称为该符号链接目录)。我已经导出了该目录的路径并将其放入我的.bashrc文件中。到的符号链接executable applications运行正常,但是我很难建立symlinks目录。这就是我尝试过的。
ln -s ~/mydir/ m
Run Code Online (Sandbox Code Playgroud)
这里m应该是我的符号链接mydir的目录。
这仅在我位于symlinks目录中时有效。从该目录外部尝试cd m甚至m无法正常工作。我得到:-
bash: cd: m: No such file or directory
Run Code Online (Sandbox Code Playgroud)
好的,所以我认为也许PATH无法识别directory路径。所以我尝试创建一个bash脚本。
#!/bin/sh
cd ~/mydir/
Run Code Online (Sandbox Code Playgroud)
试过了,m... permission denied。好吧,我认为并做chmod +x m了那个文件。当我像那样运行该脚本时,m什么也没有。我试过了./m,还是没有。
我几乎迷失了要做如此简单的任务的决心。
PATH 用于查找命令,我认为命令应该是文件或文件的符号链接。
因此,cd m它不起作用,因为这里的命令是“ cd”(不是m)。查找“ m”不会在PATH中发生。
只是m不起作用,因为在PATH中找到的“ m”是指向目录而不是文件的链接。您可以尝试创建另一个指向文件的“ m”,然后将其放在PATH的目录中,当您运行just时,它将被识别m。
您创建的脚本可以正常工作,除了cd现在发生在新的shell中,并且在脚本末尾丢失了。您可以通过ls在脚本中将cd 放在后面来进行检查。
有几种方法可以实现您想要的。
一种选择是使用CDPATH变量。这是cd命令的搜索路径。检查man bash详细信息,但基本上,您所需要做的就是将symlinks目录添加到CDPATH。
export CDPATH=~/symlinks:$CDPATH
cd m ## will cd to linked directory
Run Code Online (Sandbox Code Playgroud)
或者,您可以创建别名或函数,并将其放入.bashrc或其他源文件中。
alias m="cd ~/mydir"
m() {
cd ~/mydir
}
Run Code Online (Sandbox Code Playgroud)
现在您可以输入mcd到mydir
| 归档时间: |
|
| 查看次数: |
1309 次 |
| 最近记录: |