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