Cómo configurar variables de entorno llamando a un script tcsh que genera otro script csh

Cómo configurar variables de entorno llamando a un script tcsh que genera otro script csh

No puedo configurar las variables ambientales presentes en un .cshuso de otro .tcshque obtiene este archivo dentro de él:

  • Esto no establece las variables de entorno:
    $PERC_PATH/bin/runperc.csh ...<some arguments>
    
  • Mientras que esto establece las variables de entorno:
    source $PERC_PATH/bin/runperc.csh ..<some arguments>
    


Ambos son ejecutables, los shebangs son /usr/bin/cshy runperc.cshlas fuentes perc_setup.cshque contienen:

source $PERC_PATH/perc_setup.csh
  • perc_setup.cshcontiene setenvy algunos otros comandos:
    setenv MGC_RVEDB_DIR {$PERC_PATH}/setup:{$HOME}
    


¿Cómo configuro las variables de entorno en la terminal sin tener que especificar explícitamente source la ruta del script?

Respuesta1

Las variables de entorno nunca pueden propagarse "hacia arriba" desde un ejecutable externo al shell. Si es necesario configurarlos mediante un script csh, entoncestengo que sourceese script: oculta la 'fuente' detrás de un alias si lo deseas.

alias perc 'source $PERC_PATH/bin/runperc.csh'

Hay algunas alternativas, por ejemplo, hacer que las variables de entorno de salida del script sean stdout para que sean evaluadas por el padre, pero serían aún más detalladas y aún requerirían que ejecute el código directamente en el shell padre.

información relacionada