pushd は常に現在のディレクトリをプッシュしますか?

pushd は常に現在のディレクトリをプッシュしますか?
$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1

として実行しているにもかかわらず、pushd常に現在のディレクトリ (例: スタック) をプッシュするようです。/tmp/d1pushd ../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_DUPSzshunsetopt pushdignoredups

関連情報