Depende. Em zsh você pode configurar cd para empurrar o diretório antigo na pilha de diretórios automaticamente, mas não é a configuração padrão.
Tanto quanto eu posso dizer zsh com configurações padrão se comporta muito semelhante a bash :
-
%código%
- altere o diretório para
cd somedir - salve o diretório original em
somedir - definir
OLDPWD - substitua o elemento principal da pilha de diretórios (conforme mostrado por
PWD="somedir") comdirs(o número de elementos na pilha não é alterado).
- altere o diretório para
-
%código%:
- altere o diretório para
somedir - valores de swap de
cd -e$OLDPWD - modifica o elemento principal da pilha de diretórios para refletir (o novo)
PWD
- altere o diretório para
-
%código%:
- altere o diretório para
OLDPWD - salvar o diretório original em
PWD - definir
pushd somedir - empurre
somedirpara a pilha de diretórios (estendendo-o por um elemento)
- altere o diretório para
-
%código%:
- salvar o diretório original em
OLDPWD - remove o primeiro elemento da pilha de diretórios
- altere o diretório para o novo elemento superior da pilha de diretórios
- defina
PWD="somedir"como o novo elemento principal da pilha de diretórios
- salvar o diretório original em
Observação: Se o diretório de trabalho atual é considerado um elemento da pilha de diretórios, ele é diferente entre somedir e popd . Eu usei OLDPWD como referência para as listas acima.
-
Em
PWD, o diretório de trabalho atual é considerado o principal elemento da pilha de diretórios. Ozshdiz:pushd [-n] [dir][…] Adds
dirto the directory stack at the top, making it the new current working directory as if it had been supplied as the argument to thecdbuiltin. […]A impressão
bash(bash) confirma que o primeiro elemento é idêntico abash. -
Em
man 1 bash, o diretório de trabalho atual não faz parte da pilha de diretórios (mas ainda é mostrado comDIRSTACK).echo ${dirstack[@]}diz:pushd [ -qsLP ] [ arg ][…] Change the current directory, and push the old current directory onto the directory stack. In the first form, change the current directory to arg. […]
Imprimir
$PWD(zsh) e compará-lo com a saída dedirsdeve mostrar queman 1 zshbuiltinsnão faz parte de 'dirstack.
Em ambos os shells, o dirstack imprime o diretório de trabalho atual como o primeiro elemento. Também em ambos os shells, o elemento da pilha de diretórios com o índice echo ${dirstack[@]} refere-se ao diretório que era atual antes do último dirs . Isso ocorre porque as matrizes em PWD geralmente são numeradas de dirs , enquanto são numeradas de 1 in pushd . Portanto, há pouca diferença prática
Como dito acima, esse comportamento pode ser modificado em zsh .
Se você definir a opção 1 em 0 ( bash ) zsh se comporta como AUTO_PUSHD , o diretório anterior é colocado automaticamente na pilha de diretórios. Este é provavelmente o caso da sua máquina. Você pode executar zsh para obter uma lista de opções que não estão definidas como padrão. Veja se setopt autopushd aparece na lista.
Mas isso não modifica cd somedir para se comportar como pushd somedir . Em vez disso, ele simplesmente envia setopt para a pilha de diretórios e altera o diretório para autopushd . Isso significa que chamar repetidamente cd - aumentará a pilha de diretórios ( popd ). Se ele realmente se comportar exatamente como $PWD em seu sistema, sugiro se $OLDPWD for realmente o construído ( cd - ); é possível que seja substituído por um alias ou função.
Como a pilha de diretórios aumentará rapidamente com ($PWD $OLDPWD $PWD $OLDPWD $PWD …) habilitada, você poderá limitar seu tamanho definindo o parâmetro popd para o tamanho máximo desejado.
Você também pode evitar duplicatas definindo a opção cd .
Para mais opções, consulte o manual .