SunOS 5.10 / bin / sh && envvariables不起作用

当我在/bin/sh更改一个env var时,它只会在新的export命令后生效,例如:

 $ which ant /usr/sfw/bin/ant $ env | grep ANT ANT_HOME=/usr/local/apache-ant-1.9.8 $ PATH=$ANT_HOME/bin:$PATH $ which ant /usr/sfw/bin/ant $ env | egrep '^PATH=' PATH=/usr/local/gcc-492/bin:/export/home/sisis/mpi-V50:... $ export PATH $ which ant /usr/local/apache-ant-1.9.8/bin/ant $ env | egrep '^PATH=' PATH=/usr/local/apache-ant-1.9.8/bin:/usr/local/gcc-492/bin:/export/home/sisis/mpi-V50 ... 

这是一个错误还是一个新function?

马蒂亚斯

特征。 未导出的variables对于分叉程序是不可见的。 导出它们使其可见。 PATH从父进程inheritance,并将按原样传递给subprocess,如env ; 只有在export标记后,shell进程中的任何更改才能对subprocess可见。 这也可以在传家宝bourneshell中观察到:

 $ PATH=/usr/bin:/bin $ echo $PATH /usr/bin:/bin $ env | grep \^PATH PATH=/Users/jdoe/bin:/Users/jdoe/usr/darwin15.0-x86_64/bin:/Users/jdoe/perl5/bin:... $ export PATH $ env | grep \^PATH PATH=/usr/bin:/bin $ PATH=/usr/local/bin:/usr/bin:/bin $ echo $PATH /usr/local/bin:/usr/bin:/bin $ env | grep \^PATH PATH=/usr/local/bin:/usr/bin:/bin $ 

现代(或甚至其他)炮弹不同; ZSH默认导出PATH

 $ PS1='%% ' zsh -f % echo ${(t)PATH} scalar-export-special % 

然而,这种不同的行为对SunOS sh或传家宝bourne sh没有影响。