¿Cómo puedo enumerar todas las variables de shell?

Respuestas:

21

Listar todas las variables de shell

bash: uso set -o posix ; set. Las opciones POSIX están ahí para evitar generar demasiada información, como las definiciones de funciones. declare -pTambién funciona.

zsh : utilizar typeset

Variables de shell y variables de entorno

Hay una variable de entorno disponible para exec()los procesos secundarios con memoria (como copia. Si el proceso primario cambia la variable, el entorno secundario no se actualiza). Una variable que no sea de entorno solo está disponible para el shell en ejecución actual y los fork()subshells de -ed. Esta distinción está presente en todos los depósitos.

(completado gracias a los comentarios)

Uriel
fuente
declare -phaz lo mismo
Costas
La pregunta también tiene una respuesta aquí: stackoverflow.com/questions/1305237/…
Uriel
1
set -o posixno existe en zsh; setno genera definiciones de funciones.
vinc17
1
set -o posixes un error de sintaxis en la mayoría de los shells.
mikeserv
3
Las variables de shell también están disponibles en procesos secundarios. La diferencia se produce cuando el proceso secundario ejecuta un nuevo programa: las variables de entorno se transfieren exec, las variables de shell no.
Barmar
7

Hay muchas alternativas:

printenv

Imprime los valores del entorno especificado VARIABLE (s). Si no se especifica VARIABLE, imprima pares de nombre y valor para todos ellos.

env

env: ejecuta un programa en un entorno modificado

exportar

Establecer una variable de entorno. Marque cada nombre que se pasará a los procesos secundarios en el entorno .....

-p Muestra la salida en una forma que puede reutilizarse como entrada.

Si no se proporcionan nombres, o si se da la opción `-p ', se muestra una lista de nombres exportados.

conjunto

También es útil para obtener variables de shell.

Si necesita información adicional (entero, exportado), debe usar

composición tipográfica

export tiene la ventaja de que su salida se puede volver a leer de inmediato en el shell.

Por último, hay

compgen -v

Mostrar posibles finalizaciones según las opciones.

que muestra todas las variables, shell y entorno, sin su valor o información adicional. Tendrá que hacer eco de $ VARIABLE_NAME para encontrar el valor de la variable. Pero al menos la lista está completa. Pertenece a bash , no a zsh .

MariusMatutiae
fuente
1
exportno tiene ninguna ventaja set, al menos, cuando se trata de cotizar para el reingreso de shell. Y printenvy envno son en absoluto acerca de las variables de shell, aunque éstos lo hacen a menudo coinciden con las variables de entorno.
mikeserv
3

Con zsh, puede usar typeset, que proporciona más información que set, por ejemplo, el tipo de las variables. Todavía puede filtrar la salida con grepo sed, según lo que desee. Las variables de entorno están marcadas como exporteden la salida.

vinc17
fuente