第十七章:第43节Linux 环境变量

更新于:2019-01-18 15:37:01

Linux 是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。


1)查看当前用户的环境变量

env

1.png

env命令显示所有的环境变量

1.png

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 变量名=变量值

使用这个命令可以创建修改环境变量,“=”两边不要有空格。


1.png


1.png


一个环境变量可以作为值赋值给另一环境变量


1.png


删除环境变量

export -n 环境变量名

1.png

删除环境变量也可以使用unset命令

unset 变量名


直接使用export命令,可查看已定义环境变量列表


1.png


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

1.png


vi /etc/profile,行尾加上

export ABC = 123456

1.png


保存后,让环境变量立即生效可执行如下命令:  

source /etc/profile

1.png


注:

source命令使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。


在/etc/profile里面加入命令,一定要加正确,不然的话系统会启动不起来的。所以,每次在加完命令后都要使用source命令执行下。


②用户目录/.bashrc


“/etc/profile”对系统里所有用户都有效,处于安全考虑,只为某个用户设置环境变量,就不适合写到/etc/profile文件里,可以写到“用户目录/.bashrc”文件里。或者是“用户目录/.profile”里。


1.png


5)了解shell变量


环境变量是和 Shell 紧密相关的,用户登录系统后就启动了一个 Shell 。对于 Linux 来说一般是 bash ,但也可以重新设定或切换到其它的 Shell 。根据发行版本的情况, bash 有两个基本的系统级配置文件: /etc/bashrc(bash.bashrc) 和 /etc/profile 。

1.png


这些配置文件包含两组不同的变量: shell 变量和环境变量。

前者只是在特定的 shell 中固定(如 bash ),每种shell的私有变量都不一样;

后者在不同 shell 中固定。又称用户变量,与shell无关。


很明显, shell 变量是局部的,而环境变量是全局的。环境变量是通过 Shell 命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于 bash 这个 Shell 程序来说,可以通过变量名来访问相应的环境变量,通过 export 来设置环境变量。


set

显示所有本地定义的Shell变量。

set也可以设置shell变量


1.png


结:


变量是任何一种编程语言都必不可少的组成部分,用于存放各种类型的变量。脚本语言大多是弱类型语言(动态语言),也就是说在使用变量时,不需要事先声明变量的类型,只需要直接赋值就可以。


在Bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。有一些特殊的变量会被shell环境和操作系统保留,用来存储一些特别的值。


这类变量就称为环境变量,相信大家对环境变量也并不陌生,因为即使在windows操作系统上,也存在环境变量。


我们部署PHP时没有用到环境变量,好像部署Java时,有时会需要在/etc/profile设置三个环境变量。


1.png