AccesoInicial

Variables de entorno y el PATH

Aprende que son las variables de entorno, como el sistema usa PATH para encontrar programas y como personalizar tu entorno de trabajo en la terminal.

Principiantelinuxcli

Introducción

Cuando escribes un comando como ls o grep en la terminal, el shell lo encuentra y lo ejecuta. Pero, ¿como sabe el shell donde esta el programa ls? ¿Por que no necesitas escribir la ruta completa /usr/bin/ls cada vez?

La respuesta esta en las variables de entorno, y en particular en una llamada PATH. En esta leccion vas a aprender que son las variables de entorno, como funciona el PATH, y como modificarlas para personalizar tu entorno de trabajo.

¿Por que importan las variables de entorno?

Las variables de entorno son configuraciones que el sistema y los programas leen para decidir como comportarse. Afectan desde que idioma usa el sistema hasta donde busca los programas ejecutables.

En seguridad ofensiva, las variables de entorno son relevantes por varias razones. Un PATH mal configurado puede permitir que un atacante ejecute un programa malicioso en lugar del legitimo. Variables como LD_PRELOAD o LD_LIBRARY_PATH pueden usarse para inyectar codigo. Entender como funcionan es necesario para detectar y explotar estas situaciones.

¿Que es una variable de entorno?

Una variable de entorno es un par nombre=valor que el sistema hace disponible a todos los procesos. Se escriben en mayusculas por convencion. Algunos ejemplos:

  • HOME: la ruta del directorio home del usuario (/home/user)
  • USER: el nombre del usuario actual
  • SHELL: el shell predeterminado (/bin/bash)
  • PATH: la lista de directorios donde el sistema busca programas ejecutables

El PATH

El PATH es una variable especialmente importante. Contiene una lista de directorios separados por :. Cuando escribes un comando, el shell busca el ejecutable en cada directorio del PATH, en orden, y ejecuta el primero que encuentra.

Si el ejecutable no esta en ninguno de los directorios del PATH, el shell responde con "command not found". Por eso a veces necesitas escribir la ruta completa de un programa (./mi-script.sh) o añadir su directorio al PATH.

Variables de entorno en la practica

Ver variables de entorno

Para ver el valor de una variable, usa echo con el prefijo $:

bash
1$ echo $HOME
2/home/user
3$ echo $USER
4user
5$ echo $SHELL
6/bin/bash
7

Para ver el PATH:

bash
1$ echo $PATH
2/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
3

Esto significa que cuando escribes ls, el shell busca un archivo llamado ls primero en /usr/local/sbin, luego en /usr/local/bin, y asi sucesivamente hasta encontrarlo. Puedes confirmar donde esta un programa con which:

bash
1$ which ls
2/usr/bin/ls
3$ which python3
4/usr/bin/python3
5

Para ver todas las variables de entorno de tu sesion, usa env:

bash
1$ env | head -10
2SHELL=/bin/bash
3HOME=/home/user
4USER=user
5PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
6LANG=es_ES.UTF-8
7TERM=xterm-256color
8

Crear y modificar variables

Para crear una variable temporal (solo dura mientras la terminal este abierta):

bash
1$ MI_VARIABLE="hola"
2$ echo $MI_VARIABLE
3hola
4

Para que una variable este disponible para los programas que ejecutes (procesos hijos), necesitas exportarla:

bash
1$ export MI_VARIABLE="hola"
2

Añadir un directorio al PATH

Si tienes scripts en un directorio personal y quieres ejecutarlos sin escribir la ruta completa, añade ese directorio al PATH:

bash
1$ export PATH="$HOME/scripts:$PATH"
2$ echo $PATH
3/home/user/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
4

Ahora cualquier script en ~/scripts se puede ejecutar escribiendo solo su nombre. Este cambio solo dura hasta que cierres la terminal. Para hacerlo permanente, se añade al archivo ~/.bashrc.

El entorno como contexto de ejecucion

Las variables de entorno definen el contexto en el que se ejecutan todos los programas. No son solo configuracion: son parte del modelo de seguridad. Si un programa confia en el PATH para encontrar otro programa, y un atacante puede modificar el PATH, puede hacer que se ejecute un programa diferente al esperado.

Por eso en la enumeracion de un sistema es util revisar:

  1. echo $PATH: ¿hay directorios inusuales o que el usuario pueda modificar?
  2. env: ¿hay variables con informacion sensible (credenciales, tokens)?
  3. ~/.bashrc y ~/.profile: ¿se modifica el PATH o se exportan variables al inicio de sesion?

Errores comunes

Advertencia

Sobrescribir el PATH en lugar de añadir a el. Si escribes export PATH="/mi/directorio" sin incluir $PATH, pierdes acceso a todos los comandos del sistema. Siempre usa export PATH="/mi/directorio:$PATH" para añadir sin perder lo existente.

Advertencia

Olvidar `export`. Si creas una variable sin export, solo existe en tu shell actual. Los programas que ejecutes desde ese shell no la veran. Si un script necesita leer la variable, asegurate de haberla exportado.

Consejo

Usa `which` para confirmar que programa se ejecuta. Si sospechas que un comando no hace lo que esperas, which nombre te dice exactamente que ejecutable esta usando el shell. Es una forma rapida de verificar que el PATH no esta apuntando a algo inesperado.

Conclusión

Las variables de entorno son configuraciones que afectan el comportamiento de todo el sistema. El PATH determina donde el shell busca los programas que escribes. Con echo, env y which puedes inspeccionar el entorno, y con export puedes modificarlo. Entender las variables de entorno es importante tanto para configurar tu entorno de trabajo como para reconocer vectores de ataque en un sistema. En la siguiente leccion aprenderas a instalar y gestionar software con apt, la herramienta que necesitas para añadir programas al sistema.