Ate*_*ten -3 directory path cd-command
我想知道如何将目录添加到路径(例如我的Downloads
文件夹),以便每当我cd Downloads
从任何目录键入时,我都会转到~/Downloads
.
CDPATH
如果您使用的外壳支持CDPATH
环境变量,则可以设置
CDPATH=.:$HOME
Run Code Online (Sandbox Code Playgroud)
在您的 shell 启动脚本中。然后,每当您使用cd <directory>
命令并且<directory>
不作为当前目录的子目录存在时,该命令将查找它作为您的主目录的子目录(例如,~/<directory>
如果找到匹配项,它将移动到那里。
目录名开始./
或../
禁止路径搜索,当然绝对路径名也是如此,但只有一些 shell 在他们的手册中记录了这一点。
cd ./Downloads
不会搜索路径。
请注意,CDPATH
不同 shell的规则略有不同。
.
如果您有CDPATH
变量,Almquist、Korn 和 Bourne Again shell 不会显式搜索,因此该变量必须显式包含.
前面给出的条目,以保留搜索当前目录的预期行为。.
首先搜索,除非 CDPATH
明确包含一个.
条目或者您设置了POSIX_CD
shell 选项;所以你可以使用CDPATH=$HOME并且您仍将获得搜索当前目录的行为。(这种允许控制何时
.
在路径中搜索的方法是一个古老的想法,使用命令解释器(例如 4DOS/NDOS )的 MS/PC/DR-DOS 用户会非常熟悉。).
最后搜索CDPATH
。我会故意不导出 CDPATH 变量,并会尝试将其影响限制为仅对交互式 shell。在执行复杂脚本时启用 CDPATH 可能会产生意想不到的副作用。
cdpath
为此,在 Z shell 中,您可以使用cdpath
变量而不是CDPATH
. C shell 也有cdpath
,根本没有CDPATH
。
cdpath
是一个数组类型的 shell 变量,很难意外导出。作为一个数组,它比 的冒号分隔形式更易于操作CDPATH
。
在 C shell 中,您可以执行:
设置 cdpath=(~)请注意,您不必包含
.
,因为 C shell 在查看cdpath
shell 变量之前会首先自动搜索它。要附加到现有路径,请使用:设置 cdpath=($cdpath:q ~)这
:q
会导致赋值中的变量扩展被引用,这样它就不会受到文件名扩展或命令替换的影响。
C shell.
首先搜索,然后再搜索cdpath
.
在 Z shell 中,您可以执行:
cdpath=(~)与
CDPATH
Z shell 中的规则相同;这只是用于指定搜索路径的更方便的语法。要附加到现有路径,请使用:cdpath+=(~)Z shell
:q
与 C shell 类似,但是这种语法巧妙地避免了对它的需要。
另请注意,Z shell 会自动cdpath
与CDPATH
.