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_CDshell 选项;所以你可以使用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 在查看cdpathshell 变量之前会首先自动搜索它。要附加到现有路径,请使用:设置 cdpath=($cdpath:q ~)这
:q会导致赋值中的变量扩展被引用,这样它就不会受到文件名扩展或命令替换的影响。
C shell.首先搜索,然后再搜索cdpath.
在 Z shell 中,您可以执行:
cdpath=(~)与
CDPATHZ shell 中的规则相同;这只是用于指定搜索路径的更方便的语法。要附加到现有路径,请使用:cdpath+=(~)Z shell
:q与 C shell 类似,但是这种语法巧妙地避免了对它的需要。
另请注意,Z shell 会自动cdpath与CDPATH.