Pusht pushd immer das aktuelle Verzeichnis?

Pusht pushd immer das aktuelle Verzeichnis?
$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1

Es scheint, dass pushddas aktuelle Verzeichnis immer zB in den Stapel geschoben wird , obwohl ich es als ? /tmp/d1ausführe .pushd ../d2

Beachten Sie, dass:http://linux.101hacks.com/cd-command/dirs-pushd-popd/

Das erste Verzeichnis der Ausgabe des Dir-Befehls ist immer das aktuelle Verzeichnis und nicht der Inhalt des Stapels.

Antwort1

Nein, pushdpusht nicht immer das aktuelle Verzeichnis. Von bash' manSeite:

   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.

Das Formular mit einem Verzeichnis pushd [dir]verwendet das aktuelle Verzeichnis nicht, es sei denn, dieses Verzeichnis wird explizit als Argument verwendet.pushd somedir

Antwort2

Ich verwende es zshund es hat eine Option PUSHD_IGNORE_DUPS: „Nicht mehrere Kopien desselben Verzeichnisses auf den Verzeichnisstapel legen.“. Möglicherweise müssen Sie Ihre Shell-Optionen überprüfen ( zshich musste das nämlich tun unsetopt pushdignoredups.)

verwandte Informationen