以下命令执行相同的操作
$ cd
$ cd $HOME
$ cd ~
$ cd /home/user
其中三者的路径是相对指定的。但是到底如何或为什么简单地cd
打开用户的主目录呢?
答案1
这是记录在案的行为POSIX标准:
- 如果未给出目录操作数并且 HOME 环境变量设置为非空值,则 cd 实用程序的行为应如同将 HOME 环境变量中指定的目录指定为目录操作数一样。
答案2
这个功能来自于伯恩外壳这是在版本 7 Unix1979 年。在该系统中,HOME
被记录为“命令的默认参数(主目录)cd
”。 Bourne shell 的前身(汤普森壳如果您不带参数使用,则只会打印一条错误消息chdir
(Bourne shell 还将命令名称缩短为cd
)。
我没有选择这个的权威来源,但为什么不呢?cd
没有参数没有做任何有用的事情,而主目录是用户经常需要返回的目录。该~
语法当时还不存在,cd
因此cd $HOME
.
Linux 系统通常没有手册页只能作为 shell 内置命令使用的命令。它们记录在每个 shell 的手册中。