我能够运行名为“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
这是内置的 shell 吗?这看起来更像是打印我的主目录的完全限定路径的失败尝试。
我在 OS X Yosemite 上运行 ZSH(带有 Oh-My-Zsh)。
答案1
oh-my-zsh
启用两件事,导致此行为:
- 自动光盘:如果command无法执行,且command是目录名,则
cd
到该目录执行 - CDABLE_VARS:如果命令的参数
cd
(或带有选项集的隐含 cdAUTO_CD
)不是目录,并且不以斜杠开头,请尝试扩展表达式,就好像它前面有一个~
在您的情况下,当输入时HOME
,AUTO_CD
make zsh
Performed cd HOME
,CDABLE_VARS
made zsh
Performedcd ~HOME
被~HOME
扩展到您的主目录。
您可以使用zsh
选项--xtrace
调用来查看发生了什么:
$ zsh --xtrace
$ HOME
...
+zsh:1> cd /home/cuonglm
~
....