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"
记住: 如果设置了 $CDPATH
,cd
命令将不会首先检查您的当前目录,因此您需要添加.
首先,然后确定其余路径的优先级。
这意味着,这个语法不标准:
export CDPATH="~"
正确语法:
export 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"
记住: 如果设置了 $CDPATH
,cd
命令将不会首先检查您的当前目录,因此您需要添加.
首先,然后确定其余路径的优先级。
这意味着,这个语法不标准:
export CDPATH="~"
正确语法:
export CDPATH=".:~"