Rad*_*dek 6 command-line-interface unix-shell
有人可以向我解释cd -
命令是如何工作的吗?man cd 告诉我An argument of - is equivalent to $OLDPWD.
然后我在网上发现 $OLDPWD 是 cd 命令设置的以前的工作目录。当我做 cd - 在我的 unix 上我得到-bash: cd: OLDPWD not set
这让我感到困惑。
更新:它现在可以工作了,它给了我以前的工作目录。我想我之前没有使用和 cd 命令,所以这就是没有设置 $OLDPWD 的原因。
再问一个问题cd
(键入 cd 并按 Enter)是做什么的?我不会这么说的。有没有更好的技术解释?
host [~]# cd
host [~]#
Run Code Online (Sandbox Code Playgroud)
Dav*_*ney 10
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
Run Code Online (Sandbox Code Playgroud)
cd
不带任何参数将chdir
到$HOME
[dave@odessa tmp]$ echo $HOME
/export/home/dave
[dave@odessa tmp]$ HOME=/ cd
[dave@odessa /]$ pwd
/
Run Code Online (Sandbox Code Playgroud)
type cd
Run Code Online (Sandbox Code Playgroud)
告诉我们
cd 是一个内置的 shell
man sh
Run Code Online (Sandbox Code Playgroud)
告诉我们您的发现:
如果将单个破折号指定为参数,它将被 OLDPWD 的值替换。
shell 中 cd 的内部实现会执行chdir(2) -syscall。