关于AIX下的su不能使用环境变量问题的解决
雨水 2009-05-18
在将系统从Linux移植到AIX的过程中会遇到很多问题,su不能使用环境变量的问题就是其中之一。
脚本中有如下语句:
su - namp -c "/opt/nawg/bin/startwap.sh"
意思上从当前用户切换到namp用户下去,以namp用户的身份执行/opt/nawg/bin/startwap.sh脚本文件。
上面的语句在Linux运行没有任何问题,但在AIX环境就会报错,错误的意思上找不到某个环境变量。而你手工su – namp到namp用户下去,然后输入env却可以找到这个环境变量,这说明在Linux下和AIX下su – namp –c的行为是不同的。su - namp不能使用namp用户的环境变量。
经过很长时间的摸索和跟IBM工程师的沟通,最后问题解决了。这里写下来跟大家分享一下。如果要使用namp用户的环境变量,需加一个参数-l,具体如下:
su - namp -l -c "/opt/nawg/bin/startwap.sh"
注意: -l这个参数在AIX下的man su 中根本就没有提到。这也是看似这么简单一个问题那么难以解决的原因。