Supongamos que tengo este script
export.bash :
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
Cuando ejecuto el script e intento acceder al $VAR
, no obtengo ningún valor.
echo $VAR
¿Hay alguna forma de acceder al archivo$VAR
simplemente ejecutando export.bash sin obtenerlo ?
bash
shell
unix
environment-variables
tarrsalah
fuente
fuente
source
oeval
o ...)man source
no funcionará porquesource
está integrado en bash, debes ejecutarlohelp source
Respuestas:
Respuesta rápida: no.
Pero hay varias soluciones posibles.
El más obvio, que ya ha mencionado, es usar
source
o.
ejecutar el script en el contexto del shell de llamada:Otra forma es tener el script, en lugar de establecer una variable de entorno, comandos de impresión que establecerán la variable de entorno:
Un tercer enfoque es tener un script que establezca las variables de entorno internamente y luego invoque un comando específico con ese entorno:
Este último enfoque puede ser bastante útil, aunque es inconveniente para el uso interactivo, ya que no le brinda la configuración en su shell actual (con todas las demás configuraciones e historial que ha creado).
fuente
Para exportar primero la variable VAR, la forma más lógica y que parece funcionar es obtener la variable:
o
Ahora cuando hace eco desde el shell principal funciona
Ahora reiniciaremos VAR
Ahora ejecutaremos un script para obtener la variable y luego la desarmaremos:
el código: cat test-export.sh
Aquí hay una manera
TENGA EN CUENTA: Las exportaciones se limitan al script que ejecuta las exportaciones en su consola principal, por lo que en lo que respecta a un trabajo cron, lo agregaría como la consola como a continuación ... para la parte del comando aún cuestionable: así es como lo haría corre desde tu caparazón:
En el símbolo del sistema (siempre que export.bash tenga varios valores de eco)
cat v1.sh
Ahora, siempre que sea para su uso, puede hacer que las variables estén disponibles para sus scripts en cualquier momento haciendo un alias bash como este:
agregue esto a su .bashrc
fuente de su archivo bashrc y puede hacer lo anterior en cualquier momento ...
De todos modos volviendo al resto ...
Esto lo ha hecho disponible globalmente y luego ejecutó el script.
¡simplemente repítelo y luego ejecuta export en el eco!
gato export.bash
Ahora dentro del script o su consola ejecute:
Tratar:
Múltiples valores siempre que sepa lo que espera en otro script utilizando el método anterior:
gato export.bash
cat test-export.sh
Ahora los resultados
y la actualización final final para la asignación automática lee las VARIABLES:
El script: cat test-export.sh
fuente
Ejecutar
Cualquier variable que obtenga de un archivo después de esto se exportará a su shell.
Cuando termines, ejecuta. Esto deshabilitará el modo allexport.
fuente
bash source export
en GoogleEncontró una forma interesante y ordenada de exportar variables de entorno desde un archivo:
en
env.vars
:script de prueba:
fuente
Otra solución alternativa que, según el caso, podría ser útil: crear otro bash que herede la variable exportada. Es un caso particular de respuesta @Keith Thompson, tendrá todos esos inconvenientes.
export.bash:
Ahora:
fuente
. ./export.bash
bash
como hijo del shell actual. Y comoVAR
se exportó antes, esa invocación incluirá la variable. Por supuesto, si escribeexit
laVAR
va a salir. ¿Te fijaste?La respuesta es no, pero para mí hice lo siguiente
el script: myExport
un alias en mi .bashrc
Aún así lo obtienes, pero tal vez de esta manera es más útil y es interesante para otra persona.
fuente
Tal vez pueda escribir una función en ~ / .zshrc, ~ / .bashrc.
Debido al uso de variables externas, puede evitar escribir un archivo de script.
fuente