Variables en Shell Linux: Crear, Modificar y Usar en Terminal y Scripts
Aunque no seas programador, ya debes haber escuchado hablar de variables. Son una forma que tiene la computadora de guardar valores, ya sean números o un conjunto de letras, de manera que puedan ser utilizados después para algún procesamiento.
El shell de Linux también permite que el usuario cree variables para guardar valores, números, nombres, fechas e incluso el resultado de comandos.
Varias configuraciones del propio sistema se almacenan en variables, que pueden ser modificadas en cualquier momento, permitiendo la personalización del sistema.
Variable PS1 del Prompt del Shell de Linux
El primer contacto del usuario con el shell de Linux es el prompt de comandos.
Cómo se presenta este prompt de comandos puede variar en cada distribución, desde el más simple, con un simple "$" o con información de usuario, nombre del servidor e incluso el directorio actual:
[uira@server1 ~]$
El prompt de comandos puede ser personalizado a través de la configuración de una variable que el shell de Linux mantiene llamada PS1.
Las variables se cargan al inicio de la ejecución del bash y pueden ser configuradas manualmente en cualquier momento.
La primera variable que abordaremos es la PS1 o simplemente Prompt String 1.
Esta variable guarda el contenido del prompt de comandos del bash cuando está listo para recibir comandos.
También existe la variable PS2 que guarda el contenido del prompt de comandos cuando se necesitan múltiples líneas para completar un comando.
Estas dos variables del shell no afectan cómo el intérprete procesará los comandos recibidos, pero pueden ser de gran ayuda cuando contienen información extra como nombre del usuario, directorio actual, etc.
Se ha convenido que las variables se escriben en mayúsculas. Pero es importante que sepas que $nombre y $NOMBRE son dos variables diferentes para el shell.
Cómo ver el contenido de una variable?
El contenido de cualquier variable del Shell podrá ser visualizado con el comando echo seguido del símbolo $ más el nombre de la variable:
$ echo $PS
\$
El carácter \ indica que cualquier otro carácter que le sigue debe ser interpretado exactamente como es y no procesado por el shell. Es lo que llamamos un metacarácter.
Es común que el prompt de comandos predeterminado del bash venga en el formato: \u@\h:\W\$
Los comandos y variables en Linux son sensibles a las letras mayúsculas y minúsculas. Cada uno de estos caracteres es interpretado de forma especial.
El \u se utiliza para representar el nombre del usuario, el \h se utiliza para representar el nombre del sistema (hostname) y el \W es el directorio actual.
Un ejemplo para este prompt es: uira@notebook:home$
Variable $PATH
Otra variable importante del Shell es el PATH. El path guarda una lista de los directorios que contienen los programas que podrás ejecutar sin necesidad de pasar en la línea de comandos la ruta completa de su ubicación.
$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
Es importante que sepas que el intérprete de comandos del bash sigue el siguiente orden para encontrar y ejecutar los comandos escritos:
- El comando escrito es un comando interno del intérprete de comandos?
- Si no lo es, el comando es un programa ejecutable ubicado en algún directorio listado en la variable PATH?
- La ubicación del comando fue explícitamente declarada?
Un consejo interesante es incluir ":." al final de la variable PATH para que el bash incluya el directorio actual en su lista de búsqueda de programas ejecutables.
Diferentemente de MS-DOS, el directorio actual no está incluido en la lista de búsqueda predeterminada. Sin incluir el ":." en PATH es necesario informar la ruta relativa al llamar programas en el directorio actual con "./nombredelprograma".
Esto es un problema para usuarios novatos en Linux que no entienden por qué al escribir un comando o intentar ejecutar un programa que está en la carpeta actual no funciona la mayoría de las veces. Simplemente es la falta que hace el ":." en $PATH.
Comando set para ver o modificar variables en Linux
Una lista completa de las variables del shell podrá ser obtenida con el comando:
$ set
También podrás modificar o crear una nueva variable del shell a través del comando:
$ LIVRO=”Certificação Linux”
Preferiblemente las variables deben ser declaradas en mayúsculas y no coloques espacios entre el nombre de la variable, el símbolo = y su contenido.
Si el contenido es alfanumérico es deseable que esté entre comillas simples o dobles.
Diferencia entre comillas simples o dobles en Linux
Cuando el texto de una variable es una secuencia común de letras y números, poco importa si vas a usar comillas simples o dobles.
$ FRASE1=”Este é um teste”
$ FRASE2='de direfença entre aspas'
$ echo $FRASE1 $FRASE2
Este é um teste de diferença entre aspas
Pero si vas a utilizar las variables entre comillas, hay diferencia:
$ echo “$FRASE1 $FRASE2”
Este é um teste de diferença entre aspas
$ echo '$FRASE1 $FRASE2'
$FRASE1 $FRASE2
Entonces las comillas dobles expanden el contenido de las variables, mientras que las comillas simples no. Esto hace diferencia si quieres, por ejemplo, incluir un directorio en la variable PATH:
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin
$ PATH="$PATH:/ora/oracle/admin/bin"
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin:/ora/oracle/admin/bin
En este caso las comillas simples no funcionarían.
Exportar una variable en el shell
Después de crear una variable del shell, es necesario exportarla al entorno con el comando export.
Cuando una variable es exportada al entorno, queda disponible para todos los procesos hijos del shell (todos los programas y aplicaciones que ejecutes en el bash).
Cada vez que un programa es ejecutado por el shell, este solo recibirá las variables creadas por el shell si han sido exportadas con el comando export.
Así el proceso hijo (el programa que queremos ejecutar) heredará del proceso padre (el shell) las variables creadas.
Ve el ejemplo a continuación, donde creamos una variable llamada LIVRO:
$ LIVRO=”Certificação Linux”
$ echo $LIVRO
Certificação Linux
Si ejecutamos el bash nuevamente en la misma terminal, para crear un proceso hijo, verás que la variable LIVRO no existe, porque no fue exportada a los procesos hijo:
$ bash
$ echo $LIVRO
Uso de Comodines
Cuando estamos trabajando con archivos y directorios en el shell es muy común necesitar trabajar con varios archivos a la vez. Para hacer este tipo de tarea más simple, Linux ofrece el recurso de comodín para los nombres de archivos y directorios.
Al igual que en la baraja de cartas, los comodines son símbolos que pueden significar muchas cosas. En Linux permiten que los utilices como parte del nombre de los archivos y directorios. Ver la tabla a continuación:
| Símbolo | Descripción |
| * | Significa "vale cualquier cosa" y puede sustituir uno o más caracteres de un nombre. Por ejemplo "Certifi*" puede significar "Certificado", "Certificación" o cualquier otra combinación de nombres de archivos que inicie con "Certifi". |
| ? | Significa que puede sustituir un carácter solamente de un nombre. Por ejemplo: "?ertificado" puede sustituir "Certificado", "certificado" o cualquier otra combinación de nombres de archivos que inicie con un carácter cualquiera y termine con "ertificado". |
| {texto1, texto2...} | Sustituye la parte dentro de las llaves por texto1, luego por texto2, y así sucesivamente. Por ejemplo: "parte_{a,b,c}" va a resultar en "parte_a", "parte_b" y "parte_c". |
Ejemplos:
$ ls *.txt
Lista todos los archivos con el sufijo .txt
$ cat doc??? >> documentos
Concatena todos los archivos iniciados con "doc" que tengan 6 caracteres de tamaño en el archivo documentos.
Aún existen las variables especiales en Linux, usadas para crear scripts de shell.
Conclusión
Si necesitas guardar algún valor o dato para poder ser utilizado después, las variables son esenciales. Y necesitas conocer las variables principales del shell de Linux, como PS1 y PATH.
Aprende mucho más sobre Linux en nuestro curso en línea. Puedes realizar la inscripción aquí. Si ya tienes una cuenta, o quieres crear una, simplemente entrar o crear tu usuario aquí.
¿Te gustó? Comparte
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.