Всегда ли pushd отправляет текущий каталог?

Всегда ли 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

Нет 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).

Связанный контент