popd não funciona como esperado

0

Parece que pushd e popd não estão funcionando como esperado (exibindo o último diretório enviado), mas está estourando o primeiro diretório e depois do segundo popd que vai para o diretório inicial.

user@ubuntu:~$ pushd /tmp/dir1
/tmp/dir1 ~
user@ubuntu:/tmp/dir1$ pushd /tmp/dir2
/tmp/dir2 /tmp/dir1 ~
user@ubuntu:/tmp/dir2$ cd ..
user@ubuntu:/tmp$ popd
/tmp/dir1 ~
user@ubuntu:/tmp/dir1$ popd
~

Alguma razão para isso?

Usando o Ubuntu 16.04 LTS no VMware Workstation 12 Player

    
por urben 14.07.2017 / 18:10

1 resposta

0

Ele vai para o diretório inicial após o último pop porque você estava em seu diretório inicial quando pressionou /tmp/dir1 nessa pilha. ~ é o seu diretório inicial. Esta parte:

user@ubuntu:~$ pushd /tmp/dir1
/tmp/dir1 ~

Especificamente, quando a pilha de diretórios está vazia, ela adiciona o diretório de trabalho atual ao final da pilha.

Veja um exemplo de /etc :

bash-4.3$ cd /etc
bash-4.3$ pushd /usr
/usr /etc

O comportamento popd também é adequado. Ele removeu o diretório mais antigo, mas você também perdeu a parte que foi para o novo diretório principal depois que o antigo foi removido. Leia o manual novamente:

% bl0ck_qu0te%

Portanto, no seu caso, com pilha /tmp/dir2 /tmp/dir1 ~ , primeiro popd removido /tmp/dir2 . Então, qual é o novo topo da pilha? /tmp/dir1 , então ele também executará cd /tmp/dir1 .

Observe:

bash-4.3$ pwd
/etc
bash-4.3$ pushd /bin
/bin /etc
bash-4.3$ pushd /usr
/usr /bin /etc
bash-4.3$ pushd /sys
/sys /usr /bin /etc
bash-4.3$ popd
/usr /bin /etc
bash-4.3$ pwd
/usr
    
por Sergiy Kolodyazhnyy 14.07.2017 / 20:21