-->

Creación de variables y modificación del PATH en Linux

Objetivo:

Aprender a crear y modificar variables propias en Linux, comprender la diferencia entre estas variables y las variables del sistema, y aprender a añadir un nuevo directorio a la variable PATH para poder ejecutar un script propio sin necesidad de indicar su ruta completa.

Escenario:

  • Herramientas: Terminal de Linux y un sistema Debian o basado en Debian.
  • Conceptos clave: creación de variables, variables de shell, echo, printenv, set, PATH, chmod, permisos de ejecución.

Instrucciones:

Fase 1: Creación de una variable propia

  • Abre una terminal y crea una variable llamada v con el valor 10:
  • v=10
  • Comprueba el valor de la variable:
  • echo $v
  • Crea otra variable llamada var con el valor 20:
  • var=20
  • Comprueba su valor:
  • echo $var
  • Ten en cuenta que al crear o modificar una variable no se escribe el signo $ delante del nombre; este signo solo se utiliza para consultar su valor.

Fase 2: Comprobar el tipo de variable creada

  • Comprueba si las variables v y var aparecen entre las variables de entorno:
  • printenv | grep var
  • Comprueba ahora si aparecen entre las variables de shell:
  • set | grep var
  • Observa en qué listado aparecen y anota a qué tipo de variable corresponden.

Fase 3: Modificar el valor de una variable existente

  • Modifica el valor de la variable v, asignándole un valor de tipo texto:
  • v=variasx
  • Comprueba el nuevo valor:
  • echo $v
  • Observa que Linux admite cualquier valor para una variable, sin comprobar si el contenido es coherente con el uso que se le quiera dar.

Fase 4: Creación de un script ejecutable

  • Vuelve a tu directorio personal:
  • cd
  • Crea un nuevo directorio llamado ejecutable:
  • mkdir ejecutable
  • Accede a dicho directorio:
  • cd ejecutable
  • Crea un fichero llamado listar.sh que contenga el comando ls -l:
  • echo "ls -l" > listar.sh
  • Comprueba el contenido del fichero:
  • cat listar.sh
  • Consulta los permisos actuales del fichero:
  • ls -l
  • Observa que el fichero no dispone de permisos de ejecución.

Fase 5: Dar permisos de ejecución con chmod

  • Otorga permisos de ejecución al fichero listar.sh:
  • chmod +x listar.sh
  • Comprueba de nuevo los permisos:
  • ls -l
  • Observa que ahora aparecen los permisos de ejecución y que el nombre del fichero se muestra de otro color.

Fase 6: Ejecutar el script y comprobar el comportamiento del PATH

  • Intenta ejecutar el script escribiendo únicamente su nombre:
  • listar.sh
  • Observa el mensaje de error que devuelve el sistema indicando que la orden no se encuentra.
  • Ejecuta el script indicando la ruta completa (sustituye la ruta por la de tu propio usuario):
  • /home/usuario/ejecutable/listar.sh
  • Comprueba que ahora el script se ejecuta correctamente.
  • Ejecuta el script utilizando el directorio actual como referencia:
  • ./listar.sh
  • Comprueba que el resultado es el mismo que en el paso anterior.

Fase 7: Añadir el directorio del script a la variable PATH

  • Consulta el contenido actual de la variable PATH:
  • echo $PATH
  • Añade el directorio ejecutable al contenido existente de PATH (sustituye la ruta por la de tu propio usuario), teniendo cuidado de incluir $PATH para no perder el contenido anterior:
  • PATH=$PATH:/home/usuario/ejecutable
  • Comprueba que el nuevo directorio se ha añadido correctamente:
  • echo $PATH
  • Ejecuta ahora el script escribiendo únicamente su nombre, sin ruta ni ./:
  • listar.sh
  • Comprueba que en esta ocasión el sistema sí encuentra y ejecuta el script correctamente.

Preguntas de reflexión:

  1. ¿Cómo se crea una variable en Linux? ¿Es necesario utilizar algún comando especial?
  2. ¿Por qué al crear o modificar una variable no se coloca el signo $ delante de su nombre, pero sí al consultar su valor?
  3. ¿Por qué las variables v y var no aparecen al ejecutar printenv pero sí al ejecutar set?
  4. ¿Es obligatorio que las variables creadas por el usuario se escriban en mayúsculas? ¿Y las variables del sistema?
  5. ¿Por qué al intentar ejecutar listar.sh escribiendo solo su nombre, el sistema indicó que no encontraba la orden?
  6. ¿Qué diferencia existe entre ejecutar un script indicando su ruta completa y ejecutarlo con ./nombre_script?
  7. ¿Para qué sirve el comando chmod +x?
  8. ¿Qué ocurre si al modificar la variable PATH no se incluye $PATH en la nueva asignación?
  9. Explica con tus propias palabras qué hace exactamente la instrucción PATH=$PATH:/home/usuario/ejecutable.
  10. ¿Qué ventaja obtuviste al añadir el directorio de tu script a la variable PATH?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Cómo se crea una variable en Linux? ¿Es necesario utilizar algún comando especial?

Se crea simplemente escribiendo el nombre de la variable, el signo = y el valor deseado (por ejemplo, v=10), sin espacios alrededor del signo =. No es necesario ningún comando especial.


2. ¿Por qué al crear o modificar una variable no se coloca el signo $ delante de su nombre, pero sí al consultar su valor?

Al crear o modificar una variable se está definiendo su nombre, por lo que se escribe tal cual. El signo $ se utiliza únicamente cuando se quiere acceder al valor almacenado en esa variable, indicándole al sistema que interprete la palabra como una variable y no como texto plano.


3. ¿Por qué las variables v y var no aparecen al ejecutar printenv pero sí al ejecutar set?

Porque al crearlas directamente en la terminal se convierten en variables de shell, no en variables de entorno. printenv solo muestra variables de entorno, mientras que set muestra también las variables de shell.


4. ¿Es obligatorio que las variables creadas por el usuario se escriban en mayúsculas? ¿Y las variables del sistema?

No es obligatorio para las variables propias, aunque se recomienda seguir la convención de mayúsculas si se van a usar como si fueran variables de configuración. Las variables del sistema sí se escriben siempre en mayúsculas por convención y no deben modificarse arbitrariamente.


5. ¿Por qué al intentar ejecutar listar.sh escribiendo solo su nombre, el sistema indicó que no encontraba la orden?

Porque, a diferencia de otros sistemas operativos, Linux no busca los ejecutables en el directorio actual por defecto, sino únicamente en los directorios indicados en la variable PATH. Como el directorio del script no estaba incluido en PATH, el sistema no pudo localizarlo.


6. ¿Qué diferencia existe entre ejecutar un script indicando su ruta completa y ejecutarlo con ./nombre_script?

Ambas formas producen el mismo resultado. La ruta completa indica exactamente dónde se encuentra el fichero, mientras que ./ hace referencia al directorio actual, indicando a Linux que busque el script en la ubicación en la que nos encontramos en ese momento.


7. ¿Para qué sirve el comando chmod +x?

Sirve para añadir permisos de ejecución a un fichero, permitiendo que este pueda ejecutarse como un programa o script.


8. ¿Qué ocurre si al modificar la variable PATH no se incluye $PATH en la nueva asignación?

Se perdería todo el contenido anterior de la variable, ya que la nueva asignación sustituiría por completo el valor existente en lugar de añadirse a él.


9. Explica con tus propias palabras qué hace la instrucción PATH=$PATH:/home/usuario/ejecutable.

Esta instrucción conserva el valor actual de PATH (gracias a $PATH) y le añade, separado por dos puntos, un nuevo directorio donde el sistema buscará también los ejecutables a partir de ese momento.


10. ¿Qué ventaja obtuviste al añadir el directorio de tu script a la variable PATH?

A partir de ese momento se pudo ejecutar el script escribiendo simplemente su nombre, sin necesidad de indicar la ruta completa ni utilizar ./, lo que resulta mucho más cómodo si el script se va a utilizar con frecuencia.


Ficha de Laboratorio: Creación de variables y modificación del PATH 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. Crea dos variables propias (v y var) con distintos valores.
    Escribe los comandos utilizados para crearlas:

    Escribe los comandos utilizados para comprobar sus valores:

    Copia aquí los resultados obtenidos:
  2. Comprueba si tus variables aparecen como variables de entorno o de shell.
    Escribe los comandos utilizados con printenv y set:

    Copia aquí lo que has observado en cada caso:

    Explica a qué tipo de variable corresponden y por qué:
  3. Crea un script llamado listar.sh que ejecute ls -l y dale permisos de ejecución.
    Escribe el comando utilizado para crear el fichero:

    Escribe el comando utilizado para darle permisos de ejecución:

    Copia aquí la salida de ls -l antes y después de dar los permisos:
  4. Intenta ejecutar el script escribiendo solo su nombre.
    Escribe el comando utilizado:

    Copia aquí el mensaje obtenido:

    Explica por qué se produce este mensaje:
  5. Ejecuta el script con la ruta completa y con ./.
    Escribe ambos comandos utilizados:

    Copia aquí el resultado obtenido en ambos casos:
  6. Añade el directorio de tu script a la variable PATH y vuelve a ejecutarlo escribiendo solo su nombre.
    Escribe el comando utilizado para modificar el PATH:

    Copia aquí el resultado de echo $PATH antes y después del cambio:

    Explica qué ocurrió al ejecutar el script después del cambio y por qué: