Navegación Linux · 5 min read · Jan 20, 2026
Consejos/trucos de navegación en la línea de comandos de Linux 3 - la variable de entorno CDPATH
En la primera parte de esta serie, discutimos el comando cd - en detalle, y en la segunda parte, analizamos en profundidad los comandos pushd y popd, así como los escenarios en los que son útiles.
Continuando con nuestra discusión sobre los aspectos de navegación en la línea de comandos, en este tutorial, discutiremos la variable de entorno CDPATH a través de ejemplos fáciles de entender. También discutiremos algunos detalles avanzados relacionados con esta variable.
** La variable de entorno CDPATH
* Incluso si tu trabajo en la línea de comandos implica realizar todas las operaciones bajo un directorio particular - digamos tu directorio personal - aún así tienes que proporcionar rutas absolutas al cambiar de directorios. Por ejemplo, considera una situación en la que estoy en el directorio /home/himanshu/Downloads*:
$ pwd
/home/himanshu/DownloadsY el requisito es cambiar al directorio /home/himanshu/Desktop. Para hacer esto, normalmente tendría que ejecutar:
cd /home/himanshu/Desktop/o
cd ~/Desktop/o
cd ../Desktop/¿No sería fácil si pudiera simplemente ejecutar el siguiente comando:
cd DesktopSí, eso es posible. Y aquí es donde entra la variable de entorno CDPATH. Puedes usar esta variable para definir el directorio base para el comando cd.
Si intentas imprimir su valor, verás que esta variable de entorno está vacía por defecto:
$ echo $CDPATH
$Ahora, considerando el caso que hemos estado discutiendo hasta ahora, usemos esta variable de entorno para definir /home/himanshu como el directorio base para el comando cd.
La forma más fácil de hacer esto es:
export CDPATH=/home/himanshuY ahora, puedo hacer lo que no podía hacer antes - desde dentro del directorio /home/himanshu/Downloads, ejecutar el comando cd Desktop con éxito.
$ pwd /home/himanshu/Downloads $cd Desktop/ /home/himanshu/Desktop $
Esto significa que ahora puedo hacer un cd a cualquier directorio bajo /home/himanshu sin especificar explícitamente /home/himanshu o ~ o ../ (o múltiples ../) en el comando cd.
Puntos a tener en cuenta
* Así que ahora sabes cómo usamos la variable de entorno CDPATH para cambiar fácilmente de /home/himanshu/Downloads a /home/himanshu/Desktop. Ahora, considera una situación en la que el directorio /home/himanshu/Desktop contiene un subdirectorio llamado Downloads*, y es este último al que pretendes cambiar.
Pero de repente te das cuenta de que hacer un cd Desktop te llevará a /home/himanshu/Desktop. Entonces, para asegurarte de que eso no suceda, haces:
cd ./DownloadsSi bien no hay problema en el comando mencionado anteriormente per se, eso es un esfuerzo adicional de tu parte (por pequeño que sea), especialmente considerando que tendrás que hacer esto cada vez que surja tal situación. Una solución más elegante a este problema puede ser establecer originalmente la variable CDPATH de la siguiente manera:
export CDPATH=".:/home/himanshu"Esto significa que le estás diciendo al comando cd que primero busque el directorio en el directorio de trabajo actual, y luego intente buscar en el directorio /home/himanshu. Por supuesto, si deseas que el comando cd se comporte de esta manera depende completamente de tu preferencia o necesidad - mi idea al discutir este punto era hacerte saber que puede surgir este tipo de situación.
Como habrás entendido hasta ahora, una vez que la variable de entorno CDPATH está configurada, su valor - o el conjunto de rutas que contiene - son los únicos lugares en el sistema donde el comando cd busca directorios (excepto, por supuesto, en los escenarios en los que usas rutas absolutas). Así que, depende completamente de ti asegurarte de que el comportamiento del comando se mantenga consistente.
Siguiendo adelante, si hay un script de bash que utiliza el comando cd con rutas relativas, entonces es mejor limpiar o desactivar primero la variable de entorno CDPATH, a menos que estés de acuerdo en quedar atrapado en problemas imprevistos. Alternativamente, en lugar de usar el comando export en la terminal para establecer CDPATH, puedes establecer la variable de entorno en tu archivo .bashrc después de probar para shells interactivos/no interactivos para asegurarte de que el cambio que intentas hacer solo se refleje en shells interactivos.
El orden en el que aparecen las rutas en el valor de la variable de entorno también es importante. Por ejemplo, si el directorio actual se enumera antes de /home/himanshu, entonces el comando cd buscará primero un directorio en el directorio de trabajo actual y luego pasará a /home/himanshu. Sin embargo, si el valor es “/home/himanshu:.” entonces la primera búsqueda se realizará en /home/himanshu y después en el directorio actual. No hace falta decir que esto afectará lo que hace el comando cd y puede causar problemas si no eres consciente del orden de las rutas.
Siempre ten en cuenta que la variable de entorno CDPATH, como su nombre indica, solo funciona para el comando cd. Esto significa que mientras estés dentro del directorio /home/himanshu/Downloads, puedes ejecutar el comando cd Desktop para cambiar al directorio /home/himanshu/Desktop, pero no puedes hacer un ls. Aquí hay un ejemplo:
$ pwd
/home/himanshu/Downloads
$ ls Desktop
ls: cannot access Desktop: No such file or directory
$Sin embargo, podría haber algunas soluciones simples. Por ejemplo, podemos lograr lo que queremos con un esfuerzo mínimo de la siguiente manera:
$ cd Desktop/;ls
/home/himanshu/Desktop
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~Pero sí, puede que no haya una solución para cada situación.
Otro punto importante: como habrás observado, cada vez que usas el comando cd con la variable de entorno CDPATH configurada, el comando produce la ruta completa del directorio al que estás cambiando en la salida. No hace falta decir que no todos querrían tener esta información cada vez que ejecutan el comando cd en su máquina.
Para asegurarte de que esta salida se suprima, puedes usar el siguiente comando:
alias cd='>/dev/null cd'El comando mencionado anteriormente silenciará la salida cada vez que el comando cd sea exitoso, pero permitirá que se produzcan los mensajes de error siempre que el comando falle.
Por último, en caso de que enfrentes un problema en el que después de establecer la variable de entorno CDPATH, no puedas usar la función de autocompletado de tabulación del shell, entonces puedes intentar instalar y habilitar bash-completion - más sobre esto aquí.
Conclusión
La variable de entorno CDPATH es una espada de doble filo - si no se usa con precaución y conocimiento completo, puede llevarte a trampas complejas que pueden requerir mucho de tu tiempo precioso para resolverse. Por supuesto, eso no significa que nunca debas intentarlo; solo evalúa todas las opciones disponibles y si concluyes que usar CDPATH sería de gran ayuda, entonces adelante y úsalo.
¿Has estado usando CDPATH como un profesional? ¿Tienes más consejos para compartir? Por favor, comparte tus pensamientos en los comentarios a continuación.
**
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.