在/etc/profile中添加环境变量时linux用户环境变量设置,遇见了一点问题,在此记录。
以下下操作大约复现了所出的问题。
1.普通用户登入系统,切换到root,在/etc/profile中添加环境变量MYENV=abc
2.直接复印环境变量,#echo$MYENVlinux操作系统界面,输出为空
3.执行#source/etc/profile后,复印#echo$MYENV,输出abc
4.打开新的终端,此时为普通用户,复印环境变量#echo$MYENV,结果为空
5.重启系统,普通用户登陆,打开终端,#echo$MYENV仍然为空
6.使用普通用户登陆,su-think,$echo$MYENV,输出abc
7.写一个脚本,其中有echo$MYENV。执行这个脚本,这条输出为空
8.切换到root,,$su-,复印MYENV可得到abc,并且执行脚本linux用户环境变量设置,仍然输出为空
很奇怪,明明可以复印出环境变量,而且脚本却不能正确执行。这儿提一些上述操作涉及到的一些东西。
su只是切换了身分linux虚拟主机,并且环境变量仍然为原用户的环境变量。使用su-可以将环境变量也改变。
在图形界面环境下,打开终端是nonlogin-shell,在shell下步入shell子进程也是nonlogin-shell。使用tty1-tty6控制终端或则使用ssh为终端远程登陆,使用的是login-shell。
login-shell在登陆时,会读取/etc/profile的全局配置,和~/.bash_profile或则~/.bash_login或则~/.profile的个人配置。nonlogin-shell只读取~/.bashrc。
问题的诱因就在于执行脚本是用的nonlogin-shell。
20171022
在/etc/profile中添加环境变量,并使用exort,以上问题可以解决