Linux环境变量
1.什么是环境变量(Environment variable)
在Linux shell中定义的变量基本分成两类:本地变量和环境变量(Environment variable), 两者最大的不同之处在于环境变量为全局变量可被子shell继承而本地变量只在当前shell有效, 用export命令即可将本地变量转化成环境变量, Linux中用env或export命令可以查看环境变量, 用declare或set可以查看所有变量(包括一般变量和环境变量).
环境变量设置命令
# 展示变量
set # 查看所有shell变量即本地变量和环境变量
env # 查看所有的环境变量(看到的结果与export相同, 因为环境变量都由export生成)
# 设置一个变量
VAR=12
# 设置只读变量, 设置后变量将不可以删除或修改
readonly VAR=12
# 将本地变量设置为环境变量
export VAR
# 在不加参数的情况下为查看使用export命令生成的所有环境变量
export
# 查看变量值
echo $VAR
# 删除变量
unset VAR
2. 环境变量和环境变量配置文件
环境变量配置文件主要分为两种: login shell配置文件以及non-login shell配置文件, 字面上看也就是登录shell与不登录shell, 登录shell好理解就是你从字符终端界面输入帐户密码登录登录成功后那就叫login shell, non-longin shell有一个很好的例子:gnome-terminal在图形界面GNOME环境下的字符终端界面, 用过图形界面就知道打开的时候是不需要输入帐户密码登录的, 打开直接可以用, 此外在已经登录的shell中输入sh或bash可以打开一个新的shell(称为子shell)这些子shell都是non-login shell, 这下可以理解了吧^_^. 它们物理上的区别在于读取的配置文件不同, 具体不同如下所示:
Non-longin Shell (系统开机后执行)
/etc/bashrc
这个文件主要调用了 /etc/profile*
和/etc/profile.d/*
Login Shell(用户登录后执行)
用户登录后执行两个文件: /etc/profile
和~/.bash_profile
(如果有~/.bash_login
或者~/.profile
可能因发行版不同而有所不同)而non-login shell不会执行这两个文件
/etc/profile
此文件里调用了一些文件
- /etc/profile.d/*.sh
- /etc/inputrc(此文件保存了热键环境变量, CentOS 6.x版本好像没在profile文件里调用, 有时间再确认一下)
~/.bash_profile
文件调用关系如下
~/.bashrc
–>/etc/bashrc
(这个文件就调用了这么一个)~/.bash_profile
–>~/.bashrc
~/.bashrc
–>/etc/bashrc
用户应该将自己的环境变量保存在~/.bash_profile
中当用户登录时环境变量则执行当系统打开后会自动执行/etc/bashrc
官方描述中表示此文件中主要包含了Functions and aliases而对/etc/profile
的描述为:System wide environment and startup programs, for login setup意思大概是此文件描述一个广泛的环境, 这些环境在登录的时候设置, 主要用来启动程序
shell执行的几种方式, 事实上shell执行的时候与环境变量息息相关, 前文中提到的配置文件都是shell程序所以可以用source
(或.
)执行, source
执行shell所产生的变量将在当前shell有效(export
执行后其子shell也有效)除了source
之外还有几种常用的执行方式:
- 当一个shell程序有运行权限是按路径运行或者PATH环境变量设置后可以直接运行, 这种方式是在子shell中运行比如运行当前目录下的shell程序
./shell_program
sh shell_program
:以sh的方式打开一个新shell执行一个shell_program, 这种方式与上一种执行的结果类似, 不同之处在于不需要有执行权限
3. 设置Shell变量的注意事项(参考《鸟哥的LINUX私房菜-第三版》)
- 变量名必须是数字和英文字母且起始字符不能是数字
=
两边不可以使用空格- 两种赋值方式(推荐用后者):
name="$name"yes
name=${name}yes
4. 最后
对于初学者来说Linux环境变量实用易懂, 关于Linux基础知识的学习笔者大部分都来自《鸟哥的Linux私房菜》以及系统帮助文档, 进一步熟悉Linux使用推荐《鸟哥的Linux私房菜》.