$ 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コマンド出力の最初のディレクトリは常に現在のディレクトリであり、スタックのコンテンツではありません。
いいえ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
zsh
を使用していますが、オプションPUSHD_IGNORE_DUPS
:「同じディレクトリの複数のコピーをディレクトリスタックにプッシュしないでください。」シェルオプションを確認する必要があるかもしれません(zsh
の場合はunsetopt pushdignoredups
。)