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

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

set当我这样输入时,该命令工作正常:

echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
set START_TIME=`date +%s`
echo $START_TIME
1499360060

tcsh但是,当我像这样显式调用它时,它不起作用:

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

我一开始尝试这样做setenv,但后来意识到子进程无法运行setenv命令。所以,我想set这是要走的路。请告知是否有其他更好的方法来解决这个问题。谢谢。

答案1

问题是您在子 shell 中设置变量,然后子 shell 终止,并带走您的变量。展示:

$ /bin/tcsh -ifc 'set VARIABLE=foo; echo $VARIABLE'; echo ${VARIABLE-blank}
foo
blank

(我的主 shell 是bash;第二个echo使用bashism 为未定义或 null 变量扩展提供默认值)

相关内容