如果我输入cd Desktop
,无论终端当前在哪个文件夹中打开,我都希望它导航到/home/bob-ubuntu/Desktop
在我的.bashrc
文件中,底部有以下几行:
alias desktop='/home/bob-ubuntu/Desktop'
alias Desktop='/home/bob-ubuntu/Desktop'
然后我获取它,但是当我输入时cd Desktop
还是cd desktop
出现相同的错误?
答案1
alias desktop='/home/bob-ubuntu/Desktop' cd desktop
别名是命令名称。命令的参数cd
不是命令名称。在此上下文中不使用别名。
如果您只输入desktop
,这将调用别名。但默认情况下你会得到一个错误
bash: /home/bob-ubuntu/Desktop: Is a directory
将行添加shopt -s autocd
到您的目录中~/.bashrc
,以便在命令位置键入目录名称来执行cd
该目录。这样,您可以~/Desktop
通过仅键入~/Desktop
(而不是cd ~/Desktop
)或使用别名 来更改目录desktop
。
或者,为有效的命令定义别名:
alias desktop='cd /home/bob-ubuntu/Desktop'
答案2
有很多方法:
- 您可以为它创建一个变量
$desktop
和/或$D
作为它的快捷方式。 - 你可以
alias desktop='cd /home/bob-ubuntu/Desktop'
- 您可以使用
$USER/Desktop
- 你可以使用
$XDG_DESKTOP_DIR
如果XDG用户目录已设置。 - 您可以添加到命令的环境变量
/home/bob-ubuntu
中CDPATH
cd
但你最好只使用:
cd ~/Desktop
蒂尔达不应该受伤! :D
请注意,您还可以使用 tilda 切换到$HOME
系统中多个用户的目录,如下所示:
cd ~root
ls ~ftp
echo ~nobody
答案3
正如 icarus 在评论中建议的那样,一种简单的方法是创建一个别名cd ~/Desktop
但是,如果您确实想cd
这样做,您可以为一个函数别名来cd
处理检查目录是否为Desktop
:
_cd () {
if [ "$1" == "Desktop" ]; then
cd ~/Desktop
else
cd $1
fi
}
alias cd="_cd"
然而,这也会导致制表符完成cd
中断