tcsh:环境变量和管道

时间:2013-12-03 12:06:07

标签: pipe tcsh

$ setenv a "hi"

$ echo $a

同样,当我这样做时:

$ setenv b "hi" | grep "hi"

$ echo $b

b:未定义的变量。

为什么设置会丢失?

我的实际使用情况为source a.csh | grep "bla" ; echo $a (where $a is set in a.csh),但我认为以上是一个简单的案例。

2 个答案:

答案 0 :(得分:2)

从手册页:

  

如果除了last之外的管道的任何组件是内置命令,则管道在子shell中执行。

因此变量仅在子shell中设置。

答案 1 :(得分:1)

在你的情况source a.csh | grep "bla" ; echo $a (where $a is set in a.csh)中,shell在实际执行整个命令之前尝试扩展变量$a,因此它仍然不是由source a.csh设置的。