
Я могу без проблем запустить команду 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, если хотите.