bash - bash 中的自动完成/更改目录是否一定要通过 CDPATH?
问题描述
我可以cd Documents
从我的文件系统上的任何位置进入~/Documents
. 事实上cd Doc
,TAB 和 Enter 紧随其后,让我到达了那里。现在我检查了我的 CDPATH,它不包括~/Documents
. echo $CDPATH
在终端中输入只会输出我的主目录。那么 bash 是从哪里获得这些信息的呢?我的目标是将一些深入我的文件系统的文件夹添加到我的 CDPATH 中。
我的.bashrc
contains only 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=".:~"
推荐阅读
- r - 根据列名R选择多列
- java - 宽度和高度必须 > 0
- ngrx - ngrx - 动作组的效果
- django - 在 DRF PageNumberPagination 中提供自定义页面大小时,page_size_query_param 引发错误
- python - 基于列表在数据框中搜索
- java - 无法在 localhost:8180 上 ping 服务器
- sass - 带有变量的动画颜色 sass 不起作用
- android - RxJava - 组合多个 Singles 的结果并作为一个返回
- c - 为什么我的函数不修改 C 结构中变量的值?
- swift - 发布方法错误:“请求超时。” - 斯威夫特