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:
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