Linux环境变量
2020-05-08 16:00:54来源:博客园 阅读 ()
Linux环境变量
在bash shell中,环境变量分为两类:
- 全局变量
- 局部变量
全局环境变量
全局环境变量对于shell会话和所有生成的子shell都是可见的。例如HOME
:
[root@localhost ~]# bash // 进入子shell
[root@localhost ~]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 14862 14747 0 04:35 pts/0 00:00:00 -bash
root 15654 14862 0 04:36 pts/0 00:00:00 bash
root 15663 15654 0 04:36 pts/0 00:00:00 ps -f
[root@localhost ~]# echo $HOME
/root
[root@localhost ~]# exit
exit
[root@localhost ~]#
局部环境变量
局部环境变量只能在定义它们的进程中可见。Linux也定义了标准的局部环境变量。
使用set
命令可以显示该进程的所有环境变量,包括局部变量、全局变量以及用户定义变量:
[root@localhost ~]# set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
...
自定义环境变量
可以在bash shell中直接设置自己的变量。
- 自定义局部环境变量
父shell创建的局部环境变量,在子shell中不可见;(子shell局部环境变量,在父shell中不可见)。
[root@localhost ~]# my_variable="Hello World"
[root@localhost ~]# echo $my_variable
Hello World
[root@localhost ~]# bash
[root@localhost ~]# echo $my_variable
[root@localhost ~]# exit
exit
[root@localhost ~]# echo $my_variable
Hello World
[root@localhost ~]#
- 自定义全局环境变量
可以通过export
命令将局部环境变量导出到全局环境变量:
[root@localhost ~]# my_variable="I am Global now"
[root@localhost ~]# export my_variable
[root@localhost ~]# echo $my_variable
I am Global now
[root@localhost ~]# bash
[root@localhost ~]# echo $my_variable
I am Global now
[root@localhost ~]# exit
exit
[root@localhost ~]# echo $my_variable
I am Global now
[root@localhost ~]#
在子shell中改变父shell继承的全局变量后,父shell中的值不会受影响,即使子shell使用了
export
命令。
删除环境变量
可以通过unset
命令来删除环境变量,同样的,在子shell中删除父shell继承的全局环境变量时,对父shell无影响:
[root@localhost ~]# echo $my_variable
I am Global now
[root@localhost ~]# unset my_variable
[root@localhost ~]# echo $my_variable
[root@localhost ~]#
定位系统环境变量
启动bash shell时会自动读取一些已持久化的环境变量,具体读取方式和bash的启动方式有关:
- 登录时作为默认登录shell
- 作为非登录shell的交互式shell
- 作为运行脚本的非交互shell
1.登录shell
登录Linux系统时,bash shell作为登录shell启动,会从5个文件读取命令:
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bash_login
- $HOME/.profile
- $HOME/.bashrc
其中,/etc/profile
是系统默认bash shell的主启动文件,系统上每个用户登录时都会启动这个文件。
在centos系统中,这个文件会遍历
/etc/profile.d
目录下以.sh结尾的文件并运行。所以对于全局的每个用户都需要的环境变量,我们可以在这个目录下创建一个相应的文件。
在/etc/profile
启动完成后,bash会到当前用户目录下找寻2、3、4指定的文件进行运行,按顺序找到一个就忽略剩下的。
2.交互式shell进程
如果shell不是在登录时启动的(比如命令提示符中敲下bash启动的),那么这个shell叫作交互式shell。
交互式shell不会访问/etc/profile
,只会检查用户HOME目录下的.bashrc文件,也即是5。
3.非交互式shell
系统执行shell脚本时,使用的就是非交互式shell。在这种情况下,非交互式shell要想获得初始的持久化环境变量,可以使用BASH_ENV
所指定的位置找寻。
持久化环境变量建议
- 尽量不修改
/etc/profile
,最好在/etc/profile.d
目录下创建.sh结尾的文件。 - 对于个人用户持久化变量,最好是
$HOME/.bashrc
。
原文链接:https://www.cnblogs.com/NameZZH/p/12843781.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:应用系统分布式构建运维
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- 适合开发者的最佳Linux发行版 2020-06-11
- RAID 1 软件实现(Linux 系统) 2020-06-10
- linux各级目录 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash