明確呼叫時「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 程式的呼叫。

相關內容