cd命令如何工作? (unix)

有谁能向我解释cd -命令是如何工作的? 男人CD告诉我, An argument of - is equivalent to $OLDPWD. 然后我在网上发现$ OLDPWD是cd命令设置的上一个工作目录。 而当我做光盘 – 在我的unix我得到-bash: cd: OLDPWD not set这是我的困惑。

更新:现在它工作,它给了我以前的工作目录。 我想我没有使用和cd命令之前,所以这就是为什么$ OLDPWD没有设置。

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

 host [~]# cd host [~]# 

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 

没有任何参数的cdchdir$HOME

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

告诉我们

cd是一个内置的shell

 man sh 

告诉我们你发现了什么:

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

cd在shell的内部执行chdir(2) -syscall。

cd自己改变你的主目录

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