Unix-Shell

cd 命令是如何工作的?(Unix)

  • February 7, 2013

有人可以向我解釋cd -命令是如何工作的嗎?man cd 告訴我,An argument of - is equivalent to $OLDPWD.然後我在網上發現 $OLDPWD 是 cd 命令設置的前一個工作目錄。當我在我的 unix 上執行 cd - 時,我會-bash: cd: OLDPWD not set感到困惑。

**更新:**它現在可以工作了,它給了我以前的工作目錄。我想我之前沒有使用 and 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

cd沒有任何論據chdir$HOME

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

告訴我們

cd 是一個內置的 shell

man sh

告訴我們您的發現:

如果將單個破折號指定為參數,它將被 OLDPWD 的值替換。

cd 在 shell 中的內部實現執行chdir(2) -syscall。

引用自:https://serverfault.com/questions/118658