Команда «setenv» не работает в оболочке tcsh при явном вызове

Команда «setenv» не работает в оболочке tcsh при явном вызове

Я могу без проблем запустить команду setenv в своей оболочке tcsh следующим образом:

echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
setenv START_TIME `date +%s`
echo $START_TIME
1499355967

Но всякий раз, когда я запускаю его явно, как показано ниже, он не работает. Мне нужно это сделать, потому что мне нужно указать оболочку при выполнении через вызов подпроцесса python, в противном случае он вызовет оболочку shпо умолчанию.

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`'
echo $START_TIME
START_TIME: Undefined variable.

В чем проблема? Я искал эту проблему в интернете, но не смог найти ничего похожего. Это крайне раздражает.

решение1

Вы запускаете отдельный вызов оболочки, когда используете /usr/bin/tcshв первой строке вашего скрипта. Команда echoвыполняется в 'включающей' оболочке - той, в которой находятся команды.

Почему бы не бежать?обакоманды в первой строке, например:

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`; echo $START_TIME'  

Тогда они оба работают в одном и том же вызове оболочки. Замените echoкоманду вызовом вашей программы python, если хотите.

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