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
vcon el valor10: - Comprueba el valor de la variable:
- Crea otra variable llamada
varcon el valor20: - Comprueba su valor:
- 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.
v=10
echo $v
var=20
echo $var
Fase 2: Comprobar el tipo de variable creada
- Comprueba si las variables
vyvaraparecen entre las variables de entorno: - Comprueba ahora si aparecen entre las variables de shell:
- Observa en qué listado aparecen y anota a qué tipo de variable corresponden.
printenv | grep var
set | grep var
Fase 3: Modificar el valor de una variable existente
- Modifica el valor de la variable
v, asignándole un valor de tipo texto: - Comprueba el nuevo valor:
- Observa que Linux admite cualquier valor para una variable, sin comprobar si el contenido es coherente con el uso que se le quiera dar.
v=variasx
echo $v
Fase 4: Creación de un script ejecutable
- Vuelve a tu directorio personal:
- Crea un nuevo directorio llamado
ejecutable: - Accede a dicho directorio:
- Crea un fichero llamado
listar.shque contenga el comandols -l: - Comprueba el contenido del fichero:
- Consulta los permisos actuales del fichero:
- Observa que el fichero no dispone de permisos de ejecución.
cd
mkdir ejecutable
cd ejecutable
echo "ls -l" > listar.sh
cat listar.sh
ls -l
Fase 5: Dar permisos de ejecución con chmod
- Otorga permisos de ejecución al fichero
listar.sh: - Comprueba de nuevo los permisos:
- Observa que ahora aparecen los permisos de ejecución y que el nombre del fichero se muestra de otro color.
chmod +x listar.sh
ls -l
Fase 6: Ejecutar el script y comprobar el comportamiento del PATH
- Intenta ejecutar el script escribiendo únicamente su nombre:
- 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):
- Comprueba que ahora el script se ejecuta correctamente.
- Ejecuta el script utilizando el directorio actual como referencia:
- Comprueba que el resultado es el mismo que en el paso anterior.
listar.sh
/home/usuario/ejecutable/listar.sh
./listar.sh
Fase 7: Añadir el directorio del script a la variable PATH
- Consulta el contenido actual de la variable
PATH: - Añade el directorio
ejecutableal contenido existente dePATH(sustituye la ruta por la de tu propio usuario), teniendo cuidado de incluir$PATHpara no perder el contenido anterior: - Comprueba que el nuevo directorio se ha añadido correctamente:
- Ejecuta ahora el script escribiendo únicamente su nombre, sin ruta ni
./: - Comprueba que en esta ocasión el sistema sí encuentra y ejecuta el script correctamente.
echo $PATH
PATH=$PATH:/home/usuario/ejecutable
echo $PATH
listar.sh
Preguntas de reflexión:
- ¿Cómo se crea una variable en Linux? ¿Es necesario utilizar algún comando especial?
- ¿Por qué al crear o modificar una variable no se coloca el signo
$delante de su nombre, pero sí al consultar su valor? - ¿Por qué las variables
vyvarno aparecen al ejecutarprintenvpero sí al ejecutarset? - ¿Es obligatorio que las variables creadas por el usuario se escriban en mayúsculas? ¿Y las variables del sistema?
- ¿Por qué al intentar ejecutar
listar.shescribiendo solo su nombre, el sistema indicó que no encontraba la orden? - ¿Qué diferencia existe entre ejecutar un script indicando su ruta completa y ejecutarlo con
./nombre_script? - ¿Para qué sirve el comando
chmod +x? - ¿Qué ocurre si al modificar la variable
PATHno se incluye$PATHen la nueva asignación? - Explica con tus propias palabras qué hace exactamente la instrucción
PATH=$PATH:/home/usuario/ejecutable. - ¿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:
- Rellena los campos y responde en este formulario desde tu navegador.
- Pulsa el botón de imprimir al final de la página.
- Selecciona "Guardar como PDF" en el diálogo de impresión.
- Entrega el archivo PDF en el aula virtual.
Alumno/a: Fecha:
Grupo:
Completa la ficha realizando las siguientes actividades:
- Crea dos variables propias (
vyvar) con distintos valores.
Escribe los comandos utilizados para crearlas:
Escribe los comandos utilizados para comprobar sus valores:
Copia aquí los resultados obtenidos:
- Comprueba si tus variables aparecen como variables de entorno o de shell.
Escribe los comandos utilizados conprintenvyset:
Copia aquí lo que has observado en cada caso:
Explica a qué tipo de variable corresponden y por qué:
- Crea un script llamado
listar.shque ejecutels -ly 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 dels -lantes y después de dar los permisos:
- Intenta ejecutar el script escribiendo solo su nombre.
Escribe el comando utilizado:
Copia aquí el mensaje obtenido:
Explica por qué se produce este mensaje:
- Ejecuta el script con la ruta completa y con
./.
Escribe ambos comandos utilizados:
Copia aquí el resultado obtenido en ambos casos:
- Añade el directorio de tu script a la variable
PATHy vuelve a ejecutarlo escribiendo solo su nombre.
Escribe el comando utilizado para modificar elPATH:
Copia aquí el resultado deecho $PATHantes y después del cambio:
Explica qué ocurrió al ejecutar el script después del cambio y por qué: