miércoles, 30 de diciembre de 2009

Definiendo el directorio base que usa el comando "cd" con CDPATH


Fuentes: Linux 101 Hacks, softpanorama.org

CDPATH es una variable similar a PATH y provee una lista de rutas que el comando cd buscará ante cualquier parámetro que entregues como directorio. Por lo tanto, si frecuentemente estás entrando a un subdirectorio puedes configurar la variable CDPATH para que incorpore la ruta del subdirectorio en cuestión, de manera que luego puedes entrar a esa carpeta directamente usando el comando cd sin necesidad de ingresar la ruta completa.

Veamos un ejemplo. Supongamos que frecuentemente necesitas ingresar a la carpeta /etc/X11/cursors. Obviamente no es posible ingresar directamente a X11 desde tu ~/
carlos@carlos-laptop:~$ cd cursors
bash: cd: X11: No existe el fichero ó directorio
carlos@carlos-laptop:~$

Para ello añades el subdirectorio pariente de cursors a la variable CDPATH. El comando es el siguiente:
export CDPATH=[subdirectorio]

En el caso que usamos de ejemplo quedaría:
carlos@carlos-laptop:~$ export CDPATH=/etc/X11
carlos@carlos-laptop:~$ cd cursors
/etc/X11/cursors
carlos@carlos-laptop:/etc/X11/cursors$

Para hacer estos cambios permanentes debes agregar la línea siguiente a tu archivo ~/.bash_profile:
export CDPATH=/etc/X11

Para agregar más de un directorio puedes hacerlo de un modo similar a como modificas tu variable PATH. Los añades a tu ~/.bash_profile separando los subdirectorios por ":"del modo siguiente:
export CDPATH=/etc/X11:/etc:/var

También te recomiendo que la agregues en tu ~/.bashrc. La razón de esta recomendación la puedes ver aquí.

En caso de que tengas un subdirectorio en tu ~/ cuyo nombre sea idéntico a un subdirectorio contenido en la lista de CDPATH el comportamiento del comando cd dependerá de si añadiste o no un slash al final de la ruta del directorio. En caso de que lo hayas hecho el comando cd te permitirá cambiar al subdirectorio local. En caso contrario cambiarás al primer directorio listado en la lista de CDPATH cuyo nombre sea coincidente. En este último caso, para entrar al directorio local debes usar el comando:
cd ./nombre_del_directorio

Así de fácil.

No hay comentarios: