Linux 是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
1)查看当前用户的环境变量
env
env命令显示所有的环境变量
echo $变量名
可以显示指定变量的值。
环境变量格式为键值对:key=value:value (多个值之间用 : 分隔)
2)常见的环境变量
SHELL:是指当前用户用的是哪种Shell(命令解释器)。
PATH:shell命令解释器去查找命令的目录位置,从前往后的顺序查找。如:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
把php直接当作命令使用,也可以不用往/bin目录添加软连接,直接把php命令的目录路径写到PATH环境变量里也可以。
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
HISTSIZE:是指保存历史命令记录的条数。
USER:当前用户。
LOGNAME:是指当前用户的登录名。
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
3)修改添加删除环境变量
export 变量名=变量值
使用这个命令可以创建修改环境变量,“=”两边不要有空格。
一个环境变量可以作为值赋值给另一环境变量
删除环境变量
export -n 环境变量名
删除环境变量也可以使用unset命令
unset 变量名
直接使用export命令,可查看已定义环境变量列表
4)环境变量读取步骤
我们在命令行使用export设置环境变量,当用户重新登录后将会失效。如何保持设置的环境变量每次登录都有效?那就需要把设置环境变量的命令写入到系统相应的设定文档中。
当用户登入系统时候获得一个shell进程时,其读取环境设定档有三步 :
1、首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如 /etc/profile.d和/etc/inputrc
2、然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取~/.profile,这三个文档设定基本上是一样的,读取有优先关系
3、然后在根据用户帐号读取~/.bashrc
/etc/*和~/.*区别:
/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc是用户家目录下的私有环境变量设定
~/.profile与~/.bashrc的区别:
都具有个性化定制功能
~/.profile可以设定本用户专有的路径,环境变量等,它只在登入的时候执行一次
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次
① /etc/profile
vi /etc/profile,行尾加上
export ABC = 123456
保存后,让环境变量立即生效可执行如下命令:
source /etc/profile
注:
source命令使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
在/etc/profile里面加入命令,一定要加正确,不然的话系统会启动不起来的。所以,每次在加完命令后都要使用source命令执行下。
②用户目录/.bashrc
“/etc/profile”对系统里所有用户都有效,处于安全考虑,只为某个用户设置环境变量,就不适合写到/etc/profile文件里,可以写到“用户目录/.bashrc”文件里。或者是“用户目录/.profile”里。
5)了解shell变量
环境变量是和 Shell 紧密相关的,用户登录系统后就启动了一个 Shell 。对于 Linux 来说一般是 bash ,但也可以重新设定或切换到其它的 Shell 。根据发行版本的情况, bash 有两个基本的系统级配置文件: /etc/bashrc(bash.bashrc) 和 /etc/profile 。
这些配置文件包含两组不同的变量: shell 变量和环境变量。
前者只是在特定的 shell 中固定(如 bash ),每种shell的私有变量都不一样;
后者在不同 shell 中固定。又称用户变量,与shell无关。
很明显, shell 变量是局部的,而环境变量是全局的。环境变量是通过 Shell 命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于 bash 这个 Shell 程序来说,可以通过变量名来访问相应的环境变量,通过 export 来设置环境变量。
set
显示所有本地定义的Shell变量。
set也可以设置shell变量
结:
变量是任何一种编程语言都必不可少的组成部分,用于存放各种类型的变量。脚本语言大多是弱类型语言(动态语言),也就是说在使用变量时,不需要事先声明变量的类型,只需要直接赋值就可以。
在Bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。有一些特殊的变量会被shell环境和操作系统保留,用来存储一些特别的值。
这类变量就称为环境变量,相信大家对环境变量也并不陌生,因为即使在windows操作系统上,也存在环境变量。
我们部署PHP时没有用到环境变量,好像部署Java时,有时会需要在/etc/profile设置三个环境变量。