这是什么 HOME 命令?

tba*_*tba 4 zsh shell-builtin

我能够运行一个名为“HOME”的命令,它似乎等同于cd && echo "~". 但我无法弄清楚它是在哪里定义的:

$ pwd
/tmp
$ which HOME
HOME not found
$ type HOME
HOME not found
$ man HOME
No manual entry for HOME
$ HOME
~
$ pwd
/Users/tba
Run Code Online (Sandbox Code Playgroud)

这是内置的shell吗?这似乎更像是打印我的主目录的完全限定路径的失败尝试。

我在 OS X Yosemite 上运行 ZSH(使用 Oh-My-Zsh)。

cuo*_*glm 5

oh-my-zsh 启用导致此行为的两件事:

  • AUTO_CD : 如果 command 不能执行,并且 command 是目录名,则执行cd到那个目录
  • CDABLE_VARS:如果cd命令的参数(或带有AUTO_CD选项集的隐含 cd )不是目录,并且不以斜杠开头,请尝试扩展表达式,就好像它前面有一个~

在你的情况下,当打字HOMEAUTO_CD国产zsh执行cd HOMECDABLE_VARSzsh执行cd ~HOME~HOME扩展到你的主目录。

您可以致电zsh--xtrace选项来查看发生了什么:

$ zsh --xtrace
$ HOME
...
+zsh:1> cd /home/cuonglm
~
....
Run Code Online (Sandbox Code Playgroud)