![当没有指定路径时,cd 命令在哪里配置为 cd $HOME?](https://linux22.com/image/85179/%E5%BD%93%E6%B2%A1%E6%9C%89%E6%8C%87%E5%AE%9A%E8%B7%AF%E5%BE%84%E6%97%B6%EF%BC%8Ccd%20%E5%91%BD%E4%BB%A4%E5%9C%A8%E5%93%AA%E9%87%8C%E9%85%8D%E7%BD%AE%E4%B8%BA%20cd%20%24HOME%EF%BC%9F.png)
以下命令执行相同的操作
$ 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 的手册中。