fbpx Variables en el Shell de Linux: export, $VAR y .bashrc | Certificação Linux

Variables en el Shell de Linux: crear, exportar y usar en scripts

📅 01/04/2019 ⏱ 8 min ✍️ Uira Ribeiro
Linuxcómo-hacer
Variables en el Shell de Linux: crear, exportar y usar en scripts
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

Trabajar con variables en el Shell de Linux es esencial para cualquier administrador de sistemas, ya que ellas en conjunto con algunos comandos dan mucho poder y flexibilidad.

Durante la ejecución de bash se mantienen algunas variables especiales que contienen alguna información importante para la ejecución del shell.

Estas variables se cargan al inicio de la ejecución de bash y también pueden ser configuradas manualmente en cualquier momento.

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=121

Prompt de comandos PS1 y PS2

La primera variable que abordaremos es la PS1 o simplemente Prompt String 1. Esta variable guarda el contenido del prompt de comandos de 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 la forma en que el intérprete procesará los comandos recibidos, pero pueden ser de gran ayuda cuando cargan información extra como nombre del usuario, directorio actual, etc.

Esta variable es a grandes rasgos cómo el shell se presentará.

Se ha convenido que las variables se escriben todas en mayúsculas. Pero es importante que sepas que $nombre y $NOMBRE son dos variables diferentes para el shell.

El contenido de cualquier variable del Shell podrá ser visualizado con el comando echo acompañado del símbolo $ más el nombre de la variable:

$ echo $PS1

\$

El carácter \ indica que cualquier otro carácter que le siga debe ser interpretado exactamente como es y no procesado por el shell. Es lo que llamamos metacarácter.

Es común que el prompt de comandos padrão de 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 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 de bash sigue el siguiente orden para encontrar y ejecutar los comandos escritos:

1)    ¿El comando escrito es un comando interno del intérprete de comandos?

2)    Si no lo es, ¿el comando es un programa ejecutable ubicado en algún directorio listado en la variable PATH?

3)    ¿La ubicación del comando fue declarada explícitamente?

Un dato interesante es incluir ":." al final de la variable PATH para que bash incluya el directorio actual en su lista de búsqueda de programas ejecutables. A diferencia de MS-DOS, el directorio actual no está incluido en la lista de búsqueda padrão.

Sin incluir ":." en PATH es necesario informar la ruta relativa al llamar programas en el directorio actual con "./nombredelprograma".

Listar las variables en Linux

Una lista completa de las variables del shell podrá obtenerse con el comando set.

También podrás alterar o crear una nueva variable del shell a través de los comandos:

$ LIBRO="Certificación Linux"

$ export LIBRO

Preferentemente las variables deben declararse 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 y comillas 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 es una prueba"

$  FRASE2='de diferencia entre comillas'

$ echo $FRASE1 $FRASE2

Este es una prueba de diferencia entre comillas

Pero si vas a utilizar las variables entre comillas, hay diferencia:

$ echo "$FRASE1 $FRASE2"

Este es una prueba de diferencia entre comillas

$ 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 variables del shell para uso en los programas

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 bash).

Cada vez que un proceso es ejecutado por el shell, este solo recibirá las variables creadas por el shell si estas son exportadas con el comando export.

Así el proceso hijo (el programa que queremos ejecutar) heredará del proceso padre (el shell) las variables creadas.

Vea el ejemplo a continuación, donde creamos una variable llamada LIBRO:

$  LIBRO="Certificación Linux"

echo $LIBRO

Certificación Linux

Si ejecutamos bash nuevamente en la misma terminal, para crear un proceso hijo, verá que la variable LIBRO no existe, porque no fue exportada para los procesos hijo:

$ bash

$ echo $LIBRO

Algunas palabras no pueden ser utilizadas como variables, ya que son lo que llamamos palabras reservadas de Bash, utilizadas como comandos internos.

Palabras reservadas del shell

Son ellas: alias, alloc, bg, bind, bindkey, break, breaksw, builtins, case, cd, chdir, command, complete, continue, default, dirs, do, done, echo, echotc, elif, else, end, endif, endsw, esac, eval, exec, exit, export, false, fc, fg, filetest, fi, for, foreach, getopts, glob, goto, hash, hashstat, history, hup, if, jobid, jobs, kill, limit, local, log, login, logout, ls-F, nice, nohup, notify, onintr, popd, printenv, pushd, pwd, read, readonly, rehash, repeat, return, sched, set, setenv, settc, setty, setvar, shift, source, stop, suspend, switch, telltc, test, then, time, times, trap, true, type, ulimit, umask, unalias, uncomplete, unhash, unlimit, unset, unsetenv, until, wait, where, which, while.

Comando set

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=91

Uso:

$ set [variable]

El comando set muestra una lista de todas las variables locales, variables de entorno y funciones del shell.

Algunas opciones del comando set alteran el comportamiento de bash, a saber:

  • -C Previenen que la salida de un programa usando `>', `>&' y `<>' reescriba archivos. Igual que la opción -o noclobber
  • -n Lee los comandos, pero no los ejecuta. Útil para verificar scripts. Igual que la opción -o noexec
  • -P Prohíbe que el shell siga enlaces simbólicos. Igual que la opción -o physical
  • -a Marca las variables modificadas o creadas para export. Igual que la opción -o allexport
  • -o history Habilita guardar el historial de comandos digitados.

Al utilizar las opciones de set, el símbolo + puede ser utilizado para deshabilitar las opciones.

Comando unset

Uso:

$ unset [variable]

El comando unset elimina una variable de entorno de la memoria.

Ej.:

$ unset LIBRO

Comando env

Uso:

$ env VARIABLE=valor programa

El comando env se utiliza para ejecutar un programa enviando una variable de entorno. Permite que un determinado programa pueda leer una variable sin necesidad de exportarla con el comando export. La opción -i indica a env que ignore el entorno heredado, sin modificar el contenido de cualquier variable existente. Es útil para modificar una variable momentáneamente para una prueba.

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=22

Ej.:

$ env HOME=/home/guest2 programax

Comando pwd

Uso:

$ pwd

El comando pwd muestra el directorio absoluto actual.

Ej.:

$ pwd

/usr/local

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=80

¿Quiere saber si una certificación vale la pena? Sepa por qué los salarios son buenos, y por qué las empresas están buscando profesionales de Linux.

Usted entenderá que los beneficios superan por mucho el sacrificio.

Y si ya se decidió, vea nuestra Guía de Certificación.

Y si quiere saber dónde hacer los exámenes, consulte la lista de ciudades.

Si quiere saber el idioma de los exámenes, vea ese post.

Aprenda mucho más sobre Linux en nuestro curso en línea. Usted puede hacer la inscripción aquí con trial de 7 días gratis. Si ya tiene una cuenta, puede acceder aquí.

¿Le gustó? ¡Comparta :-)

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp