Estoy acostumbrado a que el set
comando bash muestre solo una lista de las configuraciones del entorno, por ejemplo. RUTA y tal.
Sin embargo, en un sistema Ubuntu que acabo de configurar, al ejecutarlo set
se volcan 2000 líneas de texto, incluidas muchas funciones como esta:
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
¿Cómo imprimo solo las variables de entorno?
Respuesta1
Por defecto set
muestra elvariables de shell, no solo las variables de entorno. En bash
funciones se consideran parte de las variables. Verhttps://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference.
Si usas env
o printenv
te mostrarán elambienteexportado a procesos secundarios, que no esnecesariamenteLo mismo que su bash
entorno:
$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1
El bash declare
y typeset
las funciones integradas pueden enumerar todo tipo de variables, para omitir funciones:
declare -F
La salida de estos tiene un formato adecuado para recrear el estado en un script de shell, por lo que es un poco detallado, aunque se puede distinguir entre matrices, números enteros y otros tipos (según la versión). Vea también el resultado de export -p
.
Y dehttps://stackoverflow.com/questions/1305237/how-to-list-variables-declared-in-script-in-bash
puedes decirle a bash que use el modo POSIX y set
se comporte "correctamente":
( set -o posix ; set )
Se ejecuta en un subshell para que no altere el shell en ejecución y recoge correctamente las variables que aún no se han exportado al entorno heredado.
Respuesta2
Si desea enumerar todas las variables de entorno, simplemente ingrese env
.