Aprende leyendo en orden

Variables de entorno — PATH y export

Aprende a referenciar variables con echo $VAR y env, qué significan HOME y PATH, a fijar variables con export, y la sustitución de comandos $(...) — todo práctico en una terminal del navegador.

Referenciar variables — echo $VAR y env

Las variables de entorno son ajustes compartidos por la shell y los programas.

Guardas un valor bajo un nombre, y escribir $name sustituye ese valor.

Referencia una anteponiendo $, como echo $HOME, y ejecuta env para mostrar la lista de variables de entorno fijadas actualmente.

Como variables representativas, HOME es la ruta a tu directorio personal (aquí /root), y PATH es una lista separada por dos puntos de lugares donde encontrar comandos.

Escribir solo ls funciona porque el ejecutable ls está en uno de los directorios listados en PATH, y la shell lo encuentra allí.

Otros ejemplos: PWD es el directorio de trabajo actual, USER es el nombre de usuario con el que iniciaste sesión (aquí root), y SHELL es la ruta a la shell de inicio de sesión.

VariableSignificadoEjemplo aquí
$HOMERuta al directorio personal/root
$PATHLista de directorios donde encontrar comandos (separados por :)/sbin:/usr/sbin:/bin:/usr/bin
$PWDDirectorio de trabajo actual/root
$USERNombre del usuario que inició sesiónroot
$SHELLRuta a la shell de inicio de sesión/bin/sh
Referenciar variables de entorno
echo $HOME/root (ruta home)echo $PATHlista de lugarespara hallar comandosenvmuestra todas lasvariables de entorno
$name muestra un valor; env muestra la lista de todas las variables.
echo $HOME      # ruta home (/root)
echo $PATH      # la lista de búsqueda de comandos
env             # mostrar todas las variables de entorno

① Ejecuta echo $HOME y confirma que se muestra la ruta al directorio personal.

② Ejecuta echo $PATH y confirma que los lugares donde encontrar comandos aparecen listados, separados por dos puntos.

③ Ejecuta env para mostrar la lista de variables de entorno fijadas. (Ejecútalo correctamente y aparecerá una explicación.)

Linux console
0 / 3 completado(s)
Loading Linux Terminal...

Fijar variables — export y $(...)

name=value pone un valor en una variable, y añadir export name lleva esa variable a los programas que lances después.

También puedes escribirlo en una sola línea como export name=value.

Puedes referenciar con $name, pero envolverlo como ${name} hace explícito el límite del nombre de la variable, así que se expande sin ambigüedad incluso cuando le siguen caracteres directamente, como ${HOME}/bin.

En caso de duda, se recomienda escribirlo en la forma ${name}.

$(command) es la sustitución de comandos: ejecuta el comando interior y lo reemplaza por esa salida como cadena en su lugar.

Por ejemplo, echo $(pwd) muestra la salida de pwd (la ruta a tu ubicación actual) como una cadena.

Úsalo cuando quieras meter el resultado de un comando en el valor de una variable.

Cómo se escribeSignificadoEjemplo
$VARSustituir el valor de la variableecho $HOME
${VAR}Referenciar con un límite explícito (recomendado)echo ${HOME}/bin
VAR=valueAsignar solo en la shell actualNAME=demo
export VAR=valueAsignar y llevar a los procesos hijoexport NAME=demo
$(command)Sustituir la salida del comandoecho $(pwd)
export y sustitución de comandos
export NAME=demopasar NAME tambiéna los procesos hijoecho $NAMEmuestra demoecho $(pwd)reemplazado porla salida de pwd
export lleva el valor hacia adelante, y $(...) incrusta la salida de un comando.
export GREETING=hello   # fijar una variable y llevarla adelante
echo $GREETING          # hello
echo "today is $(date)" # incrustar la salida de un comando con $(...)

① Fija una variable de entorno con export NAME=demo.

② Ejecuta echo $NAME y confirma que se muestra el valor que fijaste, demo.

③ Ejecuta echo $(pwd) y confirma que la salida de pwd dentro de $(...) se muestra como una cadena.

Linux console
0 / 3 completado(s)
Loading Linux Terminal...

Cómo funciona PATH — cómo se encuentra un comando

PATH es una variable de entorno que lista los directorios donde encontrar comandos, separados por dos puntos :.

Cuando escribes un comando solo por su nombre, sin ruta, como ls o cat, la shell recorre los directorios listados en PATH de izquierda a derecha y ejecuta el primer ejecutable que encuentra.

Por eso ls solo funciona sin escribir la ruta completa /bin/ls.

A la inversa, un comando que no está en ninguno de los directorios de PATH da not found.

Para llamar a tu propio script solo por su nombre, necesitas añadir su ubicación a PATH, que es lo que veremos a continuación.

Cómo se encuentra un comando vía PATH
escribir lsbuscar PATHdesde la izquierdaparar en laprimera coincidencia/sbinno hay lssiguiente lugar/usr/sbinno hay lssiguiente lugar/binls está aquíejecutar /bin/ls/usr/binnunca se alcanzala búsquedaterminó
Cuando PATH es /sbin:/usr/sbin:/bin:/usr/bin, ls se busca desde la izquierda /sbin en orden, se encuentra en /bin y la búsqueda se detiene ahí. Nunca llega hasta /usr/bin.

Cómo añadir a PATH

Cuando quieres ejecutar tu propio comando solo por su nombre, añade su ubicación a PATH.

Escríbelo como export PATH=${PATH}:/new/dir, añadiendo dos puntos y el nuevo directorio al final del PATH actual.

Incluyes ${PATH} para añadir a los lugares de búsqueda existentes sin borrarlos.

① Primero muestra la ruta de búsqueda actual con echo ${PATH}.

② Ejecuta export PATH=${PATH}:/opt/bin para añadir una ubicación al final.

③ Ejecuta echo ${PATH} de nuevo y confirma que /opt/bin se añadió al final.

Linux console
0 / 3 completado(s)
Loading Linux Terminal...
QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Qué muestra echo $HOME?

Pregunta 2¿Cuál es correcto sobre el papel de PATH?

Pregunta 3¿Qué se muestra al ejecutar echo $(pwd)?