1 votos

Shell establece variables de entorno para el comando

Quiero ejecutar un programa en el Terminal y establecer sus variables de entorno. Según mi investigación uno puede hacer esto usando:

VARIABLE="value" VARIABLE2="value2" run_program

Ahora me gustaría establecer una variedad de variables utilizando un archivo de configuración. De hecho, podría inyectar variables en el shell activo usando:

. program_variables.config

Entonces puedo utilizar echo $VARIABLE en la terminal.

De todos modos, cuando ahora ejecuto

. program_variables.config run_program

No puedo acceder a las variables dentro del programa. También he intentado separar las dos partes con ; y && .

Después de pensar en lo que está sucediendo allí tuve las siguientes ideas:

cat program_variables.config | xargs run_program
cat program_variables.config | tr -d '\n' run_program

y algunos más.

No escribí el programa llamado por mí mismo, así que no puedo cambiar el comportamiento de cómo se leen las variables.

¿Alguna idea de cómo hago salir el archivo como si yo mismo hubiera escrito su contenido en el shell?

0voto

yoliho Puntos 340

Las variables se fijan sólo en el ámbito actual, para que sean visibles en un programa llamado o después de una fuente (por ejemplo . file ) es necesario exportarlos.

Así, program_variables.config debe ser

export VARIABLE="value" 
export VARIABLE2="value2"

A continuación, sólo hay que ejecutar el ejecutable,

Todo esto puede estar en un script para ejecutar el ejecutable

#!/bin/sh
export VARIABLE="value" 
export VARIABLE2="value2"
run_program

Guarde este archivo y hágalo ejecutable.
Entonces sólo tienes que usar el nombre de este archivo como programa

0voto

Yo estaba enfrentando el mismo problema, mi necesidad era simple que era establecer mis credenciales como variables de entorno sólo para la sesión actual de mi cli así que puse todos mis secretos en un shell script y trató de ejecutarlo, pero ninguno de mis variables de entorno nunca apareció en mi declaración de eco, a continuación son los pasos que seguí

  1. Crear un archivo simple my_credentials.sh
  2. Exporta todas las variables de entorno como export VARNAME="value"
  3. Guarde el archivo (puede utilizar cualquier editor de su elección)
  4. Abre el terminal y lanza tu shell script
  5. Intenta hacer echo $VARNAME y mi valor no se imprimió porque estaba haciendo un error tonto (aunque no sé por qué)

Comando equivocado: sh /Users/me/myShellDir/my_shell.sh
Forma correcta : . /Users/me/myShellDir/my_shell.sh**

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X