Seguro que alguna vez, utilizando la consola de Linux, os habéis encontrado en la siguiente situación: estáis trabajando en un directorio determinado, y queréis cambiar a otro, pero volver al primero más tarde.
Soluciones para este problema hay muchas, desde copiar la ruta en el portapapeles (pero a veces no se puede) hasta crear una variable de la shell, pasando por otras aún más pintorescas.
La que yo propongo ahora, sin embargo, es bastante más simple y elegante: usar la pila de directorios del sistema. Mediante los comandos “pushd” y “popd“, podemos respectivamente apilar y desapilar directorios de dicha pila. Veamos un ejemplo sencillo:
ramiro@cormanthor:/etc/php5/apache2$ pushd .
/etc/php5/apache2 /etc/php5/apache2
ramiro@cormanthor:/etc/php5/apache2$ cd /var/log/
ramiro@cormanthor:/var/log$ cd /usr/bin/
ramiro@cormanthor:/usr/bin$ popd
/etc/php5/apache2
ramiro@cormanthor:/etc/php5/apache2$
Mucho más cómodo, y nos olvidamos de nombrar variables, usar portapapeles y demás chapucillas. Además, en los scripts puede venir muy, pero que muy bien.

La shell BASH guarda la memoria del último directorio visitado, por lo que también se puede usar “cd -” para volver al directorio anterior.
Sí, eso lo sabía. La coña de la pila es que puedes meter varios, y que puedes desapilarlos en cualquier momento, ya que “cd -” sólo tiene memoria para el último. ;)
Que curioso yo me mataba haciendo screen y retomando xD