Tutorial de variables de entorno Bash

Descripción general

Siempre que hablamos con un servidor remoto o hacemos algo en un shell, el shell almacena datos en forma de variables que almacena en un área que se llama entorno . El entorno de shell se puede definir como un área de almacenamiento que el shell compila cada vez que se inicia una nueva sesión para un shell. Esto se hace para que el entorno contenga cualquier variable local o global que hayamos definido desde su último inicio. Aprenderemos qué son las variables locales y globales en la próxima sección.

Tipos de variables de entorno

En un entorno Bash, hay dos tipos de variables de entorno que pueden ser definidas por un usuario para ser utilizadas en scripts o en los programas de shell que escriben:

  1. Variables globales
  2. Variables locales

Las variables globales que se definen como variables de entorno están disponibles en todas las sesiones de shell que compila el shell, pero las variables locales solo están disponibles en el shell que se está ejecutando actualmente y se perderán una vez que se cierre la sesión de shell. En esta lección, estudiaremos cómo definir variables globales y locales para un entorno Bash y también veremos cuáles son algunas de las variables reservadas que no se pueden establecer como variables locales o globales en un entorno Bash.

Creando Variables

Tanto las variables locales como las globales distinguen entre mayúsculas y minúsculas y, por lo general, se escriben con mayúscula. De acuerdo con una convención, las variables locales deben mantenerse en minúsculas y las variables globales deben mantenerse en mayúsculas. Aunque esto es solo una convención y puede conservar cualquier nombre para las variables locales y globales. Un nombre de variable no puede comenzar con un número y solo debe contener caracteres al principio.

Intentemos crear una variable no válida con un ejemplo:

export 1var=23

Esto es lo que obtenemos con este comando:

Creando variable inválida

A continuación se muestra una regla general para crear variables:

VARIABLE_NAME=“value”

Tenga en cuenta que NO poner espacios alrededor del símbolo igual provocará errores. Además, es un buen hábito citar los valores de cadena que definimos para la variable para que haya menos posibilidades de errores. Intentemos definir una variable e imprimirla en el shell:

website=“linuxhint”
echo $website

Esto es lo que obtenemos con este comando:

Variable de impresión

Tenga en cuenta que la variable que definimos en el shell anterior es una variable local y esta variable se eliminará tan pronto como reiniciemos el shell. Para confirmar esto, reinicie el shell e intente imprimir la variable nuevamente:

La variable local se pierde al reiniciar el shell

Exportación de variables

Para convertir una variable local que definimos anteriormente en una variable global, podemos exportar la variable agregándola al archivo .bashrc para que esté disponible incluso en los reinicios del shell. Edite el archivo .bashrc con este comando:

nano ~/.bashrc

Ahora editaremos el archivo y agregaremos el siguiente contenido al final:

# Setting environment variables
export WEBSITE=‘LinuxHint’

Una vez que se agrega el contenido, guarde y salga del archivo. Si ahora intentamos imprimir la variable, todavía no existirá. Esto se debe a que necesitamos volver a cargar el archivo en la memoria con el siguiente comando:

source ~/.bashrc

Una vez hecho esto, la variable se imprimirá (incluso entre reinicios):

Exportar variables

Variables reservadas

Bash de variables reservadas

Las variables reservadas en Bash son las que están predefinidas en el shell. Podemos usarlos sin definirlos, como:

Imprimir variables reservadas

Hay una lista completa de variables en BASH, como:

auto_resume Controla cómo interactúa el shell con el usuario y el control del trabajo.
INTENTO Proporciona el nombre de ruta completo que se utiliza para ejecutar la sesión actual de Bash.
BASH_ENV El valor de esta variable se expande y se usa como el nombre de un archivo de inicio antes de que se ejecute un script.
BASH_VERSION Proporciona el número de versión de la instancia actual del shell Bash.
BASH_VERSINFO Proporciona información sobre la versión de la instancia actual del shell Bash.
COLUMNAS Utilizado por los complementos para determinar el ancho del terminal al imprimir listas de selección.
COMP_CWORD Proporciona la posición actual del cursor en el caparazón.
COMP_LINE Proporciona el número de línea actual en el caparazón.
COMP_POINT Proporciona un índice de la posición actual del cursor en relación con el comienzo del comando actual
COMP_WORDS Una matriz que proporciona una lista de palabras únicas en la línea de comando.
COMPLETAR Una matriz de valores de cadena a través de la cual Bash proporciona la funcionalidad de autocompletar
DIRSTACK Una matriz de valores de cadena que contiene el contenido de la pila de directorios actual
EUID Proporciona el ID de usuario del usuario actual.
FCEDIT El editor utilizado por defecto por la opción -e para el comando incorporado fc.
FIGNORE Una lista de sufijos separados por dos puntos Valores de cadena que deben ignorarse al completar el nombre de archivo en la línea de comando
FUNCNAME Devuelve el nombre de la función de shell en ejecución.
GLOBIGNORE Una lista de sufijos separados por dos puntos Patrones de cadenas que deben ignorarse durante la expansión del nombre de archivo
GRUPOS Define la lista de grupos a los que pertenece el usuario actual
HISTCMD El índice en la lista de historial del comando actual
SU CONTROL Define si se agrega un comando al archivo de historial
HISTFILE Proporciona el nombre del archivo donde se almacena el historial de comandos. El valor predeterminado es / .bash_history.
HISTFILESIZE Define el número máximo de líneas almacenadas en el archivo histórico.
HISTIGNORE Cadenas de patrón separadas por dos puntos que se utilizan para decidir qué líneas de comando deben almacenarse en el archivo de historial
HISTSIZE Define el recuento máximo de comandos para almacenar en la lista del historial
HOSTFILE Contiene el nombre de un archivo en el mismo formato que / etc / hosts que debe leerse cuando el shell necesita completar un nombre de host
NOMBRE DE ANFITRIÓN Proporciona el nombre del host actual.
HOSTTYPE Proporciona el nombre de la máquina en la que se ejecuta Bash
IGNOREEOF Decidir qué hacer cuando el comando recibe solo la entrada EOF
INPUTRC Proporciona el nombre del archivo de inicialización de Readline, el predeterminado es / etc / inputrc
LANG Determine la categoría de configuración regional no seleccionada con una variable que comience con LC_.
LC_ALL Anula el valor de los valores LANG y LC_ que especifican una categoría de configuración regional
LC_CTYPE Define cómo se interpretan los caracteres y las clases de caracteres cuando se realiza la expansión del nombre de archivo y la coincidencia de patrones
LC_MESSAGES Proporciona datos de configuración regional utilizados para traducir cadenas entre comillas dobles precedidas por un símbolo “$”.
LC_NUMERIC Proporciona la categoría de configuración regional utilizada para formatear números
LINENO Proporciona el número de línea del script o función de shell que se está ejecutando actualmente.
MACHTYPE Una cadena que describe completamente el tipo de sistema en el que se está ejecutando Bash, en el formato estándar GNU CPU-COMPANY-SYSTEM
OLDPWD El directorio de trabajo anterior según lo establecido por el comando cd
OPTERR Si se establece en el valor 1, Bash muestra mensajes de error generados por getopts incorporado
OSTYPE Describe el sistema operativo en el que se ejecuta Bash
PIPESTATUS Una variable de matriz que contiene una lista de valores de estado de salida de los procesos en la canalización de primer plano ejecutada más recientemente
POSIXLY_CORRECT Si se establece esta variable, el shell entrará en modo POSIX al iniciar
PPID ID de proceso definido del proceso padre del shell
PROMPT_COMMAND Si se establece, el valor se interpreta como un comando a ejecutar antes de la impresión de cada indicador principal (PS1).
PS3 El valor de esta variable se utiliza como solicitud del comando de selección. El valor predeterminado es “’#? ‘”
PS4 El valor es el indicador impreso antes de que se repita la línea de comando cuando se establece la opción -x por defecto es “’+’”.
PWD Define el directorio de trabajo actual
ALEATORIO Cada vez que se hace referencia a este parámetro, se genera un número entero aleatorio entre 0 y 32767. La asignación de un valor a esta variable inicia el generador de números aleatorios.
RESPUESTA La variable predeterminada para la lectura incorporada
SEGUNDOS Define la vida actual de la carcasa en segundos
COMPRAS Lista de opciones de shell que están actualmente habilitadas
SHLVL Recuento de proyectiles Bash actualmente activos
FORMATO DE TIEMPO Formato de fecha que se mostrará en la cáscara
UID ID de usuario del usuario activo actual del shell

Intente imprimir estas variables para ver cómo funcionan como lo hicimos al principio.

Variables reservadas de Bourne Shell

Al igual que los parámetros del shell Bash que proporcionamos anteriormente, el shell Bourne también tiene algunas variables reservadas. Aquí están las variables de shell simples que define el shell:

CDPATH Una lista de directorios separados por dos puntos que se utiliza como ruta de búsqueda para el comando incorporado cd.
CASA El directorio de inicio del usuario actual el predeterminado para el cd incorporado. El valor de esta variable también es utilizado por la expansión de tilde.
IFS Una lista de caracteres que separan campos se usa cuando el shell divide palabras como parte de la expansión
CORREO Si este parámetro se establece en un nombre de archivo y la variable MAILPATH no se establece, Bash informa al usuario de la llegada de correo en el archivo especificado.
MAILPATH Una lista separada por dos puntos del nombre de archivo que el shell comprueba periódicamente si hay correo nuevo.
OPTARG El valor del último argumento de opción procesado por el comando getopts
OPTIND El índice del último argumento de opción procesado por el comando getopts
CAMINO Una lista de directorios separados por dos puntos en los que el shell busca comandos.
PS1 Define la primera cadena de solicitud con el valor predeterminado de “’ s- v $’”.
PS2 Define la cadena de solicitud secundaria con el valor predeterminado de “‘&gt'”

Parámetros especiales

También podemos tener parámetros que el shell trata especialmente y que solo pueden usarse como referencias y no es posible asignarles un valor.

PS Se expande a los parámetros posicionales, comenzando desde uno. Cuando la expansión ocurre entre comillas dobles, se expande a una sola palabra con el valor de cada parámetro separado por el primer carácter de la variable especial IFS.
PS Proporciona los parámetros posicionales, comenzando por uno. Cuando la expansión ocurre entre comillas dobles, cada parámetro se expande a una palabra separada.
PS Proporciona el número de parámetros posicionales en decimal.
PS Proporciona el estado de salida de la canalización en primer plano ejecutada más recientemente.
PS Un signo de guión proporciona los indicadores de la opción actual tal como se especifica en la invocación, por el comando set incorporado, o los establecidos por el propio shell (como -i)
$$ Proporciona el ID de proceso actual del shell.
PS Proporciona el ID de proceso actual del comando en segundo plano ejecutado más recientemente
$ 0 Proporciona el nombre del shell o script de shell actual.

Probemos un ejemplo de los parámetros posicionales:

echo “$1 is the 1st positional parameter.”
echo “$2 is the 2nd positional parameter.”
echo “$3 is the 3rd positional parameter.”
echo
echo “Total number of positional parameters is $#.”

Cuando ejecutamos este comando con algunos parámetros, podemos ver el siguiente resultado:

Imprimir parámetros posicionales

Conclusión

En esta lección, analizamos cómo podemos definir y usar variables en un entorno Bash y cuáles son las variables reservadas en un shell.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux