首页 > 解决方案 > bash 中的自动完成/更改目录是否一定要通过 CDPATH?

问题描述

我可以cd Documents从我的文件系统上的任何位置进入~/Documents. 事实上cd Doc,TAB 和 Enter 紧随其后,让我到达了那里。现在我检查了我的 CDPATH,它不包括~/Documents. echo $CDPATH在终端中输入只会输出我的主目录。那么 bash 是从哪里获得这些信息的呢?我的目标是将一些深入我的文件系统的文件夹添加到我的 CDPATH 中。

我的.bashrccontains only export CDPATH=~,我的主目录中没有.bash_profile

标签: bashautocomplete

解决方案


CDPATH是一个环境变量。它看起来与包含许多不同路径的 PATH 变量完全一样,这些路径使用 ':' 连接。

例如,如果您运行:

$ cat file.txt

这实际上正在运行:

$ /usr/bin/cat file.txt

这是$PATH有帮助的。

类似的$CDPATH,它会查看您设置的位置(按顺序),并会为您提供更改目录的建议。

例如,如果你想去 /var/lib 中的目录,无论你在哪里,你可以在你的~/.bashrc:

export CDPATH=".:/home/mahdy:/var/lib"

记住:如果$CDPATH设置,该cd命令将不会首先检查您的当前目录,因此您需要先添加它,.然后优先考虑其余路径。

这意味着,这种语法不是标准的

export CDPATH="~"

正确的语法:

export CDPATH=".:~"

推荐阅读