Я не могу установить переменные окружения, присутствующие в .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'
Существуют некоторые альтернативы, например, заставить скрипт выводить переменные среды на стандартный вывод для их оценки родительской оболочкой, но они будут еще более многословными и все равно потребуют от вас запуска кода непосредственно в родительской оболочке.