Pushd 总是推送当前目录吗?

Pushd 总是推送当前目录吗?
$ 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。)

相关内容