env 环境变量继承猜想
猜想:
# su zjz
是父shell开出来的子shell
# su - zjz
就是父shell,新成立
env命令
env命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用"-“作为参数选项时,隐藏了选项”-i"的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。
参数:
-i:开始一个新的空的环境;
-u<变量名>:从当前环境中删除指定的变量
实验测试猜想
在root下定义一个新的全局变量ZXC,env查看里面没有内容
使用export升级为全局变量后,env查看已经在env列表里
注意:使用export将变量升级为全局变量,只对该shell有效
退出此shell,export定义的全局变量也会失效
想要让变量永久生效需将变量写在/etc/profile中。(#source /etc/profile 立即生效)
结果
使用su zjz
登录,查看zjz下的env环境变量,找到在root下定义的ZXC变量
使用su - zjz 登录,查看zjz下的env环境变量,没有找到root下定义的ZXC变量
export 变量名,将变量升级为当前用户下的全局变量
如果使用su - zjz
,就会去加载zjz自己的环境变量,
如果使用su zjz
,还使用的是root的环境变量
参考文档:
子shell以及什么时候进入子shell
https://www.cnblogs.com/f-ck-need-u/p/7446194.html
鸟哥linux私房菜
http://cn.linux.vbird.org/linux_basic/0410accountmanager.php