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).

관련 정보