Con la familia de shell Bourne, todas las variables de shell tienen mayúsculas; lo que significa que no puede saber si una variable en particular es una variable de entorno o no simplemente mirando su nombre. ¿Cómo se determina qué variables de shell Bourne son locales (definidas solo dentro del shell actual)?
13
Respuestas:
Si desea ver si una variable se exporta o no, use
declare
:fuente
La forma más portátil es
export -p
.export -p
enumera las variables exportadas. Esto suele serdeclare -x
, si su caparazón tienedeclare
.Los shells de estilo Bourne actualmente en uso deberían ser compatibles
export -p
, como lo requiere POSIX :El estándar continúa explicando que el valor de la variable se muestra de tal manera que generalmente permite su uso posterior en el lado derecho de
=
una asignación. Esto quiere decir que puede ser citado. Diferentes proyectiles pueden mostrarlos de manera diferente pero con el mismo efecto.export -p
funciona incluso en proyectiles que no tienendeclare
incorporado, como Dash .He canalizado la salida a la
grep
compacidad, pero si no la filtra, obtendrá la lista completa de sus variables exportadas. Según su pregunta, parece que eso es lo que puede encontrar más útil.Algunos shells, como Bash, usan un formato no estándar a menos que se les indique explícitamente que se comporten de manera compatible con POSIX. En Bash
export -p
da la misma salida quedeclare -x
por defecto.Zsh muestra un formato no estándar incluso cuando la compatibilidad POSIX está habilitada:
En cualquier caso, puede extraer representaciones portátiles (que pueden ser citadas) buscando una palabra seguida de
=
. Esto no se basa en palabras anteriores en la línea, siempre y cuando no precedan inmediatamente=
, lo que no deberían. Por ejemplo:Tenga en cuenta que no todas las entradas tienen necesariamente
=
. Esto se debe a que las variables pueden desarmarse pero exportarse. Esas entradas se filtran mediante elgrep
comando anterior, que puede o no ser lo que desea.La mayoría de las veces, lo que desea inspeccionar la salida y por lo que no le importa si las entradas están precedidos por
export
,declare -x
,typeset -x
, o alguna otra cosa. Entonces solo correexport -p
.Probé esos comandos en Ubuntu 16.04 LTS con versiones oficialmente empaquetadas de cada shell.
fuente
Las variables que NO se exportan se pueden ver desde la salida del
declare
comando en bash.Las variables que se exportan se pueden ver desde la salida
declare -x
o elexport
comando en bash.fuente