2
变量分配影响当前正在运行的外壳
在编写一些代码时,我发现这一行: $ TZ="America/Los_Angeles" date; echo "$TZ" Thu Dec 24 14:39:15 PST 2015 正确给出“洛杉矶”的实际时间,并且TZ不保留变量的值。一切都应该预期。 但是,使用此行(我以前用来扩展某些格式,并且基本上执行相同的操作)保留了TZ的值: TZ="America/Los_Angeles" eval date; echo "$TZ" Thu Dec 24 14:41:34 PST 2015 America/Los_Angeles 经过多次测试后,我发现这仅在某些shell中发生。它发生在破折号,ksh中,但不发生在bash或zsh中。 Q的 问题是: 为什么现在的外壳中保留TZ的值? 如何避免/控制这种情况(如果可能)? 额外。 我使用以下两行在几个shell中运行测试: myTZ="America/Los_Angeles" unset TZ; { TZ="$myTZ" date; } >/dev/null; echo -n " direct $TZ" unset TZ; { TZ="$myTZ" …