cd 命令如何工作?(unix)

cd 命令如何工作?(unix)

有人能向我解释cd -命令是如何工作的吗? man cd 告诉我An argument of - is equivalent to $OLDPWD.然后我在网上发现 $OLDPWD 是 cd 命令设置的上一个工作目录。当我在 unix 上执行 cd - 时,我得到的结果-bash: cd: OLDPWD not set是让我感到困惑。

更新:现在它可以正常工作了,它为我提供了以前的工作目录。我想我以前没有使用过 cd 命令,所以这就是未设置 $OLDPWD 的原因。

还有一个问题cd(输入 cd 并按回车键)有什么用?我不会说什么都没有。有没有更好的技术解释?

host [~]# cd
host [~]#

答案1

OLDPWD未设置,因为您尚未更改目录

[dave@odessa ~]$ cd -
-bash: cd: OLDPWD not set
[dave@odessa ~]$ cd /tmp
[dave@odessa tmp]$ cd -
/export/home/dave

[dave@odessa ~]$ cd /tmp
[dave@odessa tmp]$ echo $OLDPWD
/export/home/dave

cd毫无理由chdir$HOME

[dave@odessa tmp]$ echo $HOME
/export/home/dave
[dave@odessa tmp]$ HOME=/ cd
[dave@odessa /]$ pwd
/

答案2

type cd

告诉我们

cd 是 shell 的内置命令

man sh

告诉我们你发现了什么:

如果指定单个破折号作为参数,它将被 OLDPWD 的值替换。

shell 中 cd 的内部实现更改目录(2)-系统调用。

答案3

cd自行更改您的主目录

$ cd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/username

相关内容