$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1
似乎总是pushd
将当前目录推/tmp/d1
入堆栈,尽管我将其作为pushd ../d2
?运行
注意:http://linux.101hacks.com/cd-command/dirs-pushd-popd/
dir 命令输出的第一个目录始终是当前目录,而不是堆栈中的内容。
答案1
否pushd
并不总是推送当前目录。来自bash
'man
页面:
pushd [-n] [+n] [-n]
pushd [-n] [dir]
Adds a directory to the top of the directory stack, or rotates
the stack, making the new top of the stack the current working
directory. With no arguments, exchanges the top two directo‐
ries and returns 0, unless the directory stack is empty.
.
.
dir Adds dir to the directory stack at the top, making it
the new current working directory.
带有目录的表单pushd [dir]
不使用当前目录,除非该目录被明确用作参数。正在做pushd somedir
答案2
我正在使用zsh
,它有一个选项PUSHD_IGNORE_DUPS
:“不要将同一目录的多个副本推送到目录堆栈上。”。您可能需要检查您的 shell 选项(因为zsh
我需要这样做unsetopt pushdignoredups
。)