当没有指定路径时,cd 命令在哪里配置为 cd $HOME?

当没有指定路径时,cd 命令在哪里配置为 cd $HOME?

以下命令执行相同的操作

  • $ cd
  • $ cd $HOME
  • $ cd ~
  • $ cd /home/user

其中三者的路径是相对指定的。但是到底如何或为什么简单地cd打开用户的主目录呢?

答案1

这是记录在案的行为POSIX标准:

  1. 如果未给出目录操作数并且 HOME 环境变量设置为非空值,则 cd 实用程序的行为应如同将 HOME 环境变量中指定的目录指定为目录操作数一样。

答案2

这个功能来自于伯恩外壳这是在版本 7 Unix1979 年。在该系统中,HOME被记录为“命令的默认参数(主目录)cd。 Bourne shell 的前身(汤普森壳如果您不带参数使用,则只会打印一条错误消息chdir(Bourne shell 还将命令名称缩短为cd)。

我没有选择这个的权威来源,但为什么不呢?cd没有参数没有做任何有用的事情,而主目录是用户经常需要返回的目录。该~语法当时还不存在,cd因此cd $HOME.

Linux 系统通常没有手册页只能作为 shell 内置命令使用的命令。它们记录在每个 shell 的手册中。

相关内容