显式调用时“setenv”命令在 tcsh shell 上不起作用

显式调用时“setenv”命令在 tcsh shell 上不起作用

我可以在 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 程序的调用。

相关内容