Как задать переменные среды, вызвав скрипт tcsh, который использует другой скрипт csh

Как задать переменные среды, вызвав скрипт tcsh, который использует другой скрипт csh

Я не могу установить переменные окружения, присутствующие в .cshдругом .tcsh, который использует этот файл внутри себя:

  • Это не устанавливает переменные среды:
    $PERC_PATH/bin/runperc.csh ...<some arguments>
    
  • В то время как это устанавливает переменные среды:
    source $PERC_PATH/bin/runperc.csh ..<some arguments>
    


Оба являются исполняемыми, шебанги — это /usr/bin/csh, и runperc.cshисходники perc_setup.cshвнутри них:

source $PERC_PATH/perc_setup.csh
  • perc_setup.cshсодержит setenvи некоторые другие команды:
    setenv MGC_RVEDB_DIR {$PERC_PATH}/setup:{$HOME}
    


Как задать переменные среды в терминале, не указывая явно source путь к скрипту?

решение1

Переменные окружения никогда не могут распространяться "вверх" из внешнего исполняемого файла в оболочку. Если их нужно задать скриптом csh, то выпридется sourceэтот скрипт – скройте «источник» за псевдонимом, если хотите.

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

Существуют некоторые альтернативы, например, заставить скрипт выводить переменные среды на стандартный вывод для их оценки родительской оболочкой, но они будут еще более многословными и все равно потребуют от вас запуска кода непосредственно в родительской оболочке.

Связанный контент