我可以在 tcsh shell 中运行 setenv 命令,如下所示:
echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
setenv START_TIME `date +%s`
echo $START_TIME
1499355967
但是,每当我像下面所示显式运行它时,它就不起作用。我需要这样做,因为我在通过 python 子进程调用执行它时必须指定 shell,否则它将sh
默认调用 shell。
/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`'
echo $START_TIME
START_TIME: Undefined variable.
这里有什么问题?我在网上搜索了这个问题,但没有找到类似的问题。这非常令人沮丧。
答案1
/usr/bin/tcsh
当您在脚本的第一行使用时,您正在运行 shell 的单独调用。该echo
命令在“封闭”shell 中运行——其中包含命令。
为什么不跑两个都第一行的命令,如下所示:
/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`; echo $START_TIME'
然后它们都在 shell 的同一个调用中运行。如果您愿意,请将该命令替换echo
为对您的 python 程序的调用。