web-dev-qa-db-ja.com

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
Tim

いいえ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
Anthon

zshを使用していますが、オプションPUSHD_IGNORE_DUPS:「同じディレクトリの複数のコピーをディレクトリスタックにプッシュしないでください。」シェルオプションを確認する必要があるかもしれません(zshの場合はunsetopt pushdignoredups。)

0
Carl G