![cd 命令如何工作?(unix)](https://linux22.com/image/507431/cd%20%E5%91%BD%E4%BB%A4%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F(unix)%20.png)
有人能向我解释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