$ 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
zsh
unsetopt pushdignoredups