ver variable restaurar permanentes oracle_home java_home entorno crear configurar linux shell unix

restaurar - variables de entorno linux export



compruebe si la variable de entorno ya está configurada (4)

La solución estándar para asignar condicionalmente una variable (ya sea en el entorno o no) es:

: ${VAR=foo}

Eso establecerá VAR al valor "foo" solo si está desactivado.
Para establecer VAR en "foo" si VAR no está configurado o la cadena vacía, use:

: ${VAR:=foo}

Para poner VAR en el entorno, haga el seguimiento con:

export VAR

También puede export VAR=${VAR-foo} o export VAR=${VAR:=foo} , pero algunos shells antiguos no son compatibles con la sintaxis de la asignación y se exportan en la misma línea. Además, DRY ; usar el nombre en ambos lados del operador = es una repetición innecesaria. (Una segunda línea que exporta la variable viola el mismo principio, pero se siente mejor).

Tenga en cuenta que, en general, es muy difícil determinar si una variable está en el entorno. El análisis del resultado de env no funcionará. Considerar:

export foo='' VAR=var-value'' env | grep VAR

Tampoco funciona para engendrar una subshell y probar:

sh -c ''echo $VAR''

Eso indicaría que el VAR está establecido en la subcapa, lo que sería un indicador de que VAR está en el entorno del proceso actual, pero puede ser simplemente que VAR esté configurado en la inicialización de la subcadena. Funcionalmente, sin embargo, el resultado es el mismo que si VAR está en el entorno. Afortunadamente, generalmente no te importa si VAR está en el medio ambiente o no. Si lo necesitas allí, ponlo allí. Si lo necesita, sáquelo.

Estoy escribiendo un script de shell, donde tengo que verificar si la variable de entorno está configurada; si no está configurada, entonces tengo que configurarla. ¿Hay alguna manera de verificar el script de shell, ya sea que una variable de entorno ya esté configurada o no?


Lo que quieres hacer es nativo en bash, se llama sustitución de parámetros:

VARIABLE="${VARIABLE:=abc}"

Si VARIABLE no está configurado, el lado derecho será igual a abc. Tenga en cuenta que el operador interno := puede reemplazarse por :- que comprueba si VARIABLE no está configurado o vacío.


[ -z "$VARIABLE" ] && VARIABLE="abc" if env | grep -q ^VARIABLE= then echo env variable is already exported else echo env variable was not exported, but now it is export VARIABLE fi

Quiero enfatizar que [ -z $VARIABLE ] no es suficiente, porque puede tener VARIABLE pero no fue exportado. Eso significa que no es una variable de entorno en absoluto.


if [ -z "$VARIABLE" ]; then VARIABLE=... fi

Esto verifica si la longitud de $ VARIABLE es cero.