$ 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
)。