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
使用bash
ism 为未定义或 null 变量扩展提供默认值)