关于变量的作用域

pstree以树状图显示进程间的关系

export出来的变量只有当前进程和子进程里面有,父进程里没有,source会把脚本中的变量放到当前shell中

export A=1 定义的变量,会对自己所在的shell进程及子进程生效
B=1 定义的变量,只对自己所在的shell进程生效
在script.sh中定义的变量,在当前登陆的shell进程中source script.sh 时,脚本中自定义的变量会进入当前的登陆进程

例:
ssh mini2 “source /etc/profile;/root/apps/zookeeper-3.4.5/bin/zkServer.sh start”

.bashrc、/etc/profile、/etc/bashrc
~/.bashrc 是用户相关的终端的环境设置,通常打开一个新终端时,默认会load里面的设置,在这里的设置不影响其它人。如果一个服务器多个开发者使用,大家都需要有自己的sdk安装和设置,那么最好就是设置它。
/etc/bashrc 是系统全局针对终端环境的设置,修改了它,会影响所有用户的终端环境,这里一般配置终端如何与用户进行交互的增强功能等(比如sudo提示、命令找不到提示安装什么包等),新开的终端,已经load了这个配置,最后才load用户自己的 ~/.bashrc
/etc/profile 是系统全局针对终端环境的设置,它是login时最先被系统加载的,是它调用了/etc/bashrc,以及/etc/profile.d目录下的*.sh文件,如果有一个软件包,系统上只安装一份,供所有开发者使用,建议在/etc/profile.d下创建一个新的xxx.sh,配置环境变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容