Linux环境变量详解
来源:互联网 发布:linux 挂载sd卡 编辑:程序博客网 时间:2024/05/22 04:27
Linux环境变量详解
环境变量的本质就是变量,它的服务对象是shell程序,它分为局部环境变量和全局环境变量,分别有不同的作用域和自然生命周期
1.不同角色的shell
不同的情况下,会产生不同的shell。既然环境变量是服务于shell程序的,那么就来分析一下不同角色的shell
- 交互式shell:我们打开一个tty控制台,实际就打开了一个交互式shell。我们输入的bash命令就由交互式shell解析
- 非交互式shell:就是各种脚本程序
- 登录shell:登录系统后,首个执行的应用程序bash,该应用程序就称之为登录shell。登录shell执行后,才会由它陆续去执行其他的交互式shell,非交互式shell,可以认为它是所有shell的祖宗
2.全局环境变量
使用export导出的环境变量,就是全局环境变量
- 全局环境变量的作用域为:创建该全局环境变量的shell及其子孙shell/进程。即子shell复制父shell的全套环境变量,子shell对得到的环境变量做修改并不会影响到父shell
- 全局环境变量的自然生命周期为:创建该全局环境变量的shell死亡,并且其子孙shell/进程也全部死亡(通俗的来说,创建者的整个家族灭门了)
始祖环境变量
登录系统后,首个执行的应用程序bash(登录shell)所创建的一堆全局环境变量,它们称为始祖环境变量。这一堆环境变量的生命周期是永久的
启动shell会执行
/etc/profile
,导出一些通用全局环境变量,export PATH USER LOGNAME MAIL HOSTNAME
等,所有用户的shell进程都可以访问到这些变量,我们可以在里面添加系统级别的环境变量。然后再依次执行~/.bash_profile、~/.bash_login、~/.profile或者~./bashrc,或者/etc/bashrc
,来初始化一些用户特有的环境变量,需要注意的是后面几个文件不一定都存在
常见需求:增加PATH
在/etc/profile
最后加上export PATH="/xxxx/xxx$PATH"
全局环境变量的一般使用方法
- 例一,比如在控制台(交互式shell)中输入
export AAA="123"
,那么今后在该控制台中,直接或间接执行的shell,都将继承该控制台(交互式shell)留下来的全局环境变量,包括加入的VAR="123"
- 例二,有两个“非交互式shell”
a.sh
、b.sh
,a.sh
中执行了b.sh
,b.sh
中执行了export BBB="123"
。现在执行a.sh
,则b.sh
是其子shell,所以BBB
这个环境变量对a.sh
起不了作用。再一次印证了全局环境变量只能由创建者shell传给子孙shell
3.局部环境变量
不使用export导出的环境变量,就是局部环境变量。它通常作为某个脚本(非交互式shell)自己的私有变量
- 局部环境变量的作用域为:仅仅创建者shell自己。其父shell、其子shell均无法访问
4.操作环境变量
- 脚本和控制台中皆可设置环境变量,方法如下,尤其要注意bash的语法中“=”两边不能有空格,变量值中间也不能有空格,有的话要用单引号围起来
test=123 #局部环境变量一般用小写export TEST=123 #全局环境变量一般用大写export MYNAME='XIAO BA WU' #变量值有空格,要用单引号围起来export test #也可以这样把前面的局部变量导出到全局
- 我们可以输入下列命令来查看当前控制台(交互式shell)的环境变量
printenv #查看所有环境变量echo $HOME #查看指定环境变量
- 我们可以这样取消当前控制台(交互式shell)环境变量
unset MYNAME
0 0
- linux 环境变量详解
- [转]linux环境变量详解
- Linux环境变量详解
- linux 环境变量详解
- linux环境变量详解
- linux 环境变量详解
- Linux环境变量详解
- linux 环境变量详解
- linux环境变量设置详解
- Linux环境变量详解
- 【Linux】环境变量详解
- Linux环境变量详解
- linux中环境变量及环境变量配置文件详解
- linux环境变量 export命令详解
- Linux环境变量 概念 用途 详解
- linux环境变量 export命令详解
- linux环境变量 export命令详解
- linux环境变量 export命令详解
- 蓝桥杯练习题Java实现 入门训练 Fibonacci数列
- c++的泛型编程与模板
- python super
- 第27篇 webrtc-IOS之运行测试用例及代码部署到设备
- 基于pix硬件的apm开发环境搭建
- Linux环境变量详解
- 2016年国内开源镜像站点汇总
- SpringMVC-InitBinder验证-对表单数据验证
- BroadCastReceiver
- Android必学-异步加载+Android自定义View源码【申明:来源于网络】
- Service
- 【备忘】50个JAVA精品商业源码.rar 下载
- Git与TortoiseGit操作和github使用
- DP