bash 中的 autocompletion/changing 目录是否必须通过 CDPATH?

Does autocompletion/changing directories in bash necessarily go through CDPATH?

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

我的 .bashrc 只包含 export CDPATH=~,而我的主目录中没有 .bash_profile

CDPATH 是一个环境变量。它看起来就像包含许多使用“:”连接的不同路径的 PATH 变量。

例如,如果您 运行:

$ cat file.txt

这居然是运行宁:

$ /usr/bin/cat file.txt

这就是 $PATH 的用处。

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

例如,如果您想转到 /var/lib 中的目录,无论您身在何处,都可以在 ~/.bashrc:

中进行设置
export CDPATH=".:/home/mahdy:/var/lib"

记住: 如果设置了 $CDPATHcd 命令将不会首先检查您的当前目录,因此您需要添加. 首先,然后确定其余路径的优先级。

这意味着,这个语法不标准:

export CDPATH="~"

正确语法:

export CDPATH=".:~"