pushd는 항상 현재 디렉터리를 푸시합니까?

pushd는 항상 현재 디렉터리를 푸시합니까?
$ pwd
/tmp/d1
$ dirs
/tmp/d1
$ pushd ../d2
/tmp/d2 /tmp/d1
$ popd
/tmp/d1
$ pwd
/tmp/d1

? 로 실행하더라도 pushd항상 현재 디렉토리를 스택에 푸시하는 것 같습니다 ./tmp/d1pushd ../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.

관련 정보