-->

Variables de entorno y de shell en Linux

Objetivo:

Aprender qué son las variables de entorno y las variables de shell en Linux, comprender la diferencia entre ambas, y aprender a visualizar su contenido mediante los comandos printenv, set y echo, identificando el uso de algunas de las variables más habituales del sistema.

Escenario:

  • Herramientas: Terminal de Linux y un sistema Debian o basado en Debian.
  • Conceptos clave: variable de entorno, variable de shell, printenv, set, echo, prefijo $.

Instrucciones:

Fase 1: Comprobar el shell de trabajo

  • Abre una terminal y comprueba con qué shell estás trabajando:
  • ps
  • Observa en la salida el nombre del proceso correspondiente a tu shell (por ejemplo, bash).

Fase 2: Visualizar las variables de entorno

  • Muestra todas las variables de entorno del sistema:
  • printenv
  • Como la salida es extensa, utiliza paginación para poder recorrerla con comodidad:
  • printenv | less
  • Recorre la salida y observa que las variables aparecen, por convención, en mayúsculas.
  • Sal de la paginación pulsando la tecla q.

Fase 3: Visualizar variables de entorno y de shell juntas

  • Muestra tanto las variables de entorno como las variables de shell:
  • set | less
  • Compara esta salida con la obtenida en la fase anterior con printenv y observa que ahora aparece más información.
  • Sal de la paginación pulsando la tecla q.

Fase 4: Consultar el valor de una variable concreta

  • Muestra el valor de una única variable utilizando printenv:
  • printenv USER
  • Prueba ahora a mostrar el valor de la misma variable utilizando echo con el prefijo $:
  • echo $USER
  • Ejecuta el mismo comando pero sin el prefijo $:
  • echo USER
  • Compara los dos resultados anteriores y anota la diferencia observada.

Fase 5: Explorar algunas variables de entorno habituales

  • Consulta el terminal gráfico o remoto al que estás conectado:
  • echo $DISPLAY
  • Consulta el tipo de terminal con el que trabajas:
  • echo $TERM
  • Consulta tu directorio personal:
  • echo $HOME
  • Compara el resultado anterior con el del directorio en el que te encuentras actualmente:
  • pwd
  • Cámbiate a otro directorio distinto de tu home (por ejemplo, /tmp) y repite ambos comandos para comprobar que $HOME no cambia pero pwd sí:
  • cd /tmp
    echo $HOME
    pwd
  • Consulta el idioma y la codificación de caracteres configurados en el sistema:
  • echo $LANG
  • Consulta la shell con la que estás trabajando:
  • echo $SHELL
  • Consulta el listado de directorios donde el sistema busca los ejecutables:
  • echo $PATH
  • Observa que los distintos directorios aparecen separados por dos puntos (:).

Fase 6: Usar una variable como argumento de otro comando

  • Desde un directorio distinto a tu home, utiliza la variable $HOME como argumento de cd para volver directamente a tu directorio personal:
  • cd $HOME
  • Comprueba con pwd que has vuelto a tu directorio personal.

Preguntas de reflexión:

  1. ¿Qué diferencia existe entre una variable de entorno y una variable de shell?
  2. ¿Qué diferencia hay entre el comando printenv y el comando set?
  3. ¿Por qué es una buena práctica escribir los nombres de las variables en mayúsculas, aunque no sea obligatorio?
  4. ¿Qué diferencia observaste entre echo $USER y echo USER? ¿Por qué ocurre esto?
  5. ¿Qué diferencia existe entre la variable $HOME y la variable $PWD (o el comando pwd)?
  6. ¿Para qué sirve la variable $PATH y qué ocurre si un comando no se encuentra en ninguno de sus directorios?
  7. ¿Qué información proporciona la variable $TERM? ¿Y la variable $DISPLAY?
  8. ¿Qué información proporciona la variable $LANG?
  9. ¿Por qué las variables de entorno como $DISPLAY pueden mostrar valores distintos según el entorno (gráfico o de solo texto) en el que te conectes?
  10. ¿Qué ventaja tiene poder utilizar una variable como argumento de otro comando, como en cd $HOME?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué diferencia existe entre una variable de entorno y una variable de shell?

Las variables de entorno están asociadas al usuario y mantienen su valor independientemente del shell que se utilice. Las variables de shell están más ligadas al intérprete de comandos concreto que se está usando (por ejemplo, bash) y pueden variar si se cambia de shell.


2. ¿Qué diferencia hay entre el comando printenv y el comando set?

printenv muestra únicamente las variables de entorno, mientras que set muestra tanto las variables de entorno como las variables propias de la shell.


3. ¿Por qué es una buena práctica escribir los nombres de las variables en mayúsculas, aunque no sea obligatorio?

Porque de esta forma cualquier persona que revise el sistema o un script puede identificar rápidamente que se trata de una variable ya configurada, mejorando la legibilidad y el mantenimiento del código.


4. ¿Qué diferencia observaste entre echo $USER y echo USER? ¿Por qué ocurre esto?

echo $USER muestra el valor de la variable USER, mientras que echo USER muestra literalmente el texto "USER". Esto ocurre porque el prefijo $ es necesario para que el sistema interprete la palabra como una variable; sin él, se trata simplemente como texto plano.


5. ¿Qué diferencia existe entre la variable $HOME y la variable $PWD (o el comando pwd)?

$HOME indica cuál es el directorio personal del usuario y no cambia aunque se navegue por el sistema. $PWD (o pwd) indica el directorio en el que nos encontramos en cada momento, por lo que su valor cambia al desplazarnos con cd.


6. ¿Para qué sirve la variable $PATH y qué ocurre si un comando no se encuentra en ninguno de sus directorios?

$PATH contiene, separados por dos puntos, los directorios en los que el sistema busca los programas ejecutables cuando se escribe un comando. Si el comando no se encuentra en ninguno de esos directorios, el sistema devuelve un error indicando que la orden no existe.


7. ¿Qué información proporciona la variable $TERM? ¿Y la variable $DISPLAY?

$TERM indica el tipo de terminal con el que se está trabajando. $DISPLAY indica el terminal o dispositivo gráfico al que se está conectado; si no hay entorno gráfico, esta variable puede aparecer vacía.


8. ¿Qué información proporciona la variable $LANG?

Indica el idioma configurado en el sistema y el juego de caracteres utilizado (por ejemplo, español con codificación UTF-8).


9. ¿Por qué las variables de entorno como $DISPLAY pueden mostrar valores distintos según el entorno en el que te conectes?

Porque las variables de entorno reflejan las características del entorno de trabajo en cada momento. Al conectarse desde un entorno gráfico o desde un terminal de texto, algunos valores relacionados con la conexión y la visualización pueden cambiar o quedar vacíos.


10. ¿Qué ventaja tiene poder utilizar una variable como argumento de otro comando, como en cd $HOME?

Permite escribir comandos más flexibles y reutilizables, ya que en lugar de escribir una ruta fija se utiliza el valor de la variable, que se adapta automáticamente al usuario o al entorno en el que se ejecute.


Ficha de Laboratorio: Variables de entorno y de shell en Linux

Instrucciones de entrega:

  1. Rellena los campos y responde en este formulario desde tu navegador.
  2. Pulsa el botón de imprimir al final de la página.
  3. Selecciona "Guardar como PDF" en el diálogo de impresión.
  4. Entrega el archivo PDF en el aula virtual.

Alumno/a:      Fecha:      

Grupo:


Completa la ficha realizando las siguientes actividades:

  1. Muestra todas las variables de entorno del sistema.
    Escribe el comando utilizado:

    Copia aquí algunas de las variables que has observado en la salida:

    Explica qué formato suelen tener los nombres de las variables:
  2. Compara la salida de printenv con la de set.
    Escribe el comando utilizado para ver las variables de entorno y de shell juntas:

    Explica qué diferencia observas entre ambas salidas:
  3. Consulta el valor de la variable USER con echo, con y sin el prefijo $.
    Escribe el comando con el prefijo $:

    Escribe el comando sin el prefijo $:

    Copia aquí ambos resultados obtenidos:

    Explica la diferencia observada:
  4. Consulta las variables $HOME y $PWD desde tu directorio personal y desde otro directorio distinto.
    Escribe los comandos utilizados:

    Copia aquí los resultados obtenidos en cada caso:

    Explica la diferencia entre ambas variables:
  5. Consulta el contenido de la variable $PATH.
    Escribe el comando utilizado:

    Copia aquí el resultado obtenido:

    Explica para qué sirve esta variable y cómo están separados los directorios que contiene:
  6. Utiliza la variable $HOME como argumento del comando cd para volver a tu directorio personal.
    Escribe el comando utilizado:

    Comprueba con pwd que has vuelto a tu directorio personal y copia aquí el resultado:

    Explica qué ventaja tiene utilizar variables como argumentos de otros comandos: