1、环境变量介绍
Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。所以管理环境变量的文件也分为系统级和用户级的.
1)系统级
/etc/environment:系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据KEY=VALUE
模式的代码,对KEY
赋值以VALUE
,因此文件中如果要定义PATH
环境变量,只需加入类似如PATH=$PATH:/xxx/bin
的代码即可。
/etc/profile:是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。该文件一般是调用/etc/bash.bashrc
文件。
/etc/bash.bashrc:系统级的bashrc
文件,为每一个运行bash shell的用户执行此文件。此文件会在用户每次打开shell时执行一次。
注意:/etc/environment
是设置整个系统的环境,而/etc/profile
是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。 这两个文件修改后一般都要重启系统才能生效。
2)用户级
~/.profile: 是对应当前登录用户的profile
文件,用于定制当前用户的个人工作环境。
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,会设置一些环境变量,执行用户的.bashrc
文件。
~/.bashrc: 是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。通常设置环境变量修改这个文件。
上述配置文件执行先后顺序如下:
/etc/enviroment
–> /etc/profile
–> ~/.profile
–> /etc/bash.bashrc
–> ~/.bashrc
2、环境变量的作用
环境变量相当于给系统或用户应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关。比如PATH
,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找;再如tc或vc++中,set include=path1;path2
; 是告诉编译程序到哪里去找.h类型的文件;当然不仅仅是指定什么路径,还有其它的作用的,如set dircmd=/4
设置一个环境变量的作用是在使用dir命令时会把/4
作为缺省的参数添加到你的dir命令之后,就像你的每个命令都加了/4参数,它实际上是给命令解释程序command
设置的一个环境变量,并且是给dir
这个内部命令。
3、配置环境变量的方法
1)临时环境变量
linux下设定环境变量时,如果只是临时用一下,可以直接在shell下用set
或export
命令设定环境变量。但是只能在当前shell环境下可以用,切换或关闭重新进入就会失效。具体配置方法,如下,
#终端输入: export MYSQLPATH=/home/mysql #MYSQLPATH设置为该路径 #终端查看一个特定环境变量包含的内容,比如,MYSQLPATH,PATH echo $PATH echo $MYSQLPATH
2)永久环境变量
设置的环境变量,需要经常使用的,而不是临时使用,把上面的设置环境变量命令写到上面提到的相应配置文件中即可,则可以每次开机或打开shell时自动设置,
例如,
只需要当前用户生效的环境变量:
终端中输入:sudo vi ~/.bashrc
,编辑这个文件,在其末尾添加:
export MYSQLPATH=/home/mysql:$MYSQLPATH
# path采用:来分隔,冒号左右不需要空格.
# :$MYSQLPATH在后面新添加的优先搜索,$MYSQLPATH:在前面说明新添加的最后搜索,不加代表新路径设置为MYSQLPATH路径。
注意:在终端执行,source ~/.bashrc
,使其立即生效,或者重启电脑即可。
设置所有用户生效的环境变更:
终端中输入:sudo vi /etc/profile
,编辑这个文件,在其末尾添加:
export MYSQLPATH=/home/mysql:$MYSQLPATH
# path采用:来分隔,冒号左右不需要空格.
# :$MYSQLPATH在后面新添加的优先搜索,$MYSQLPATH:在前面说明新添加的最后搜索,不加代表新路径设置为MYSQLPATH路径。
注意:在终端执行,source /etc/profile
,使其立即生效,或者重启电脑即可。
4、PATH环境变量
Linux命令其实是一个个的命令行程序,这些程序是分布在不同的众多目录中的。当命令行中输入一个命令的时,Linux需要到指定目录去查找命令对应的程序,而在PATH
环境变量就记录这些目录。所以PATH
环境变量的作用就是记录命令的查找路径,多个路径之间用英文冒号分割的(和Windows系统的PATH
变量不同,Windows的PATH
变量的路径是用英文分号分割的),有需要时也可以加入自己的路径。具体配置方法,如下,
#比如添加搜索路径/home/cjavapy/python和/home/cjavapy/java 路径到PATH中,采用:来分隔,冒号左右不需要空格 export PATH=$PATH:/home/cjavapy/python:/home/cjavapy/java #若需要将路径放在优先搜索位置,将$PATH放在后面 export PATH=/home/cjavapy/python:/home/cjavapy/java:$PATH
注意:配置PATH
环境变量可以永久生效,也可以临时生效,具体可以参考上面介绍的配置环境变量的方法。
5、常用环境变量
Linux系统有一些重要常用的环境变量,具体如下,
$HOME:用户家目录。
$SHELL:用户在使用的Shell解释器名称。
$HISTSIZE:输出的历史命令记录条数。
$HISTFILESIZE:保存的历史命令记录条数。
$MAIL:邮件保存路径。
$LANG:系统语言、语系名称。
$RANDOM:生成一个随机数字。
$PS1 :Bash解释器的提示符。
$PATH:定义解释器搜索用户执行命令的路径。
$EDITOR:用户默认的文本编辑器。
$TERM:表示显示类型。
$RANDOM:每次引用时生成一个0到32,767之间的随机整数。
$PWD:指示由cd命令设置的当前工作目录。
$TZ:指时区。它可以使用GMT、AST等值。
$UID:显示当前用户的数字用户 ID,在shell 启动时初始化。
可以使用echo
查看变量信息,
例如,
$ echo $HOME
/root
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
6、PS环境变量
PS即是Prompt String,命令提示符的意思。在bash中一共有四个。分为表示为PS1
,PS2
,PS3
,PS4
。
1)PS1
PS1是用来控制默认提示符显示格式。下面方括号中的内容便是PS1。
例如,
$ echo $PS1
\h:\W \u\$
PS1的常用参数以及含义:
\d
代表日期,格式为weekday month date,例如:”Mon Aug 1″
\H
完整的主机名称
\h
仅取主机名中的第一个名字
\t
显示时间为24小时格式,如HHMMSS
\T
显示时间为12小时格式
\A
显示时间为24小时格式HHMM
\@
显示时间,为12小时格式am/pm
\u
当前用户的账号名称
\v
BASH的版本信息
\w
完整的工作目录名称
\W
利用basename取得工作目录名称,只显示最后一个目录名
\#
下达的第几个命令
\$
提示字符,如果是root用户,提示符为 #
,普通用户则为 $
2)PS2
一个非常长的命令可以通过在末尾加\
使其分行显示。多行命令的默认提示符是>
。 我们可以通过修改PS2
,将提示符修改为->
。
例如,
$ PS2='->'
$ ls \
->/etc \
->/boot
3)PS3
shell脚本中使用select
循环时的提示符。
例如,
#!/usr/bin/bash PS3="Select a program to exectue: " select program in 'ls -F' pwd date do $program done (The Command Line) Select a program to exectue: 2 1) ls -F 2) pwd 3) date # /home/yang # 在执行脚本的时候,PS3里面的字符串会显示在菜单的底部
4)PS4
PS4 是Prompt String 4的缩写,它是Linux/Unix下的一个用于控制脚本调试显示信息的环境变量。
用来修改set -x
跟踪输出的前缀 。
例如,
$ export PS4="+Debug Info: "
$ set -x test_syntax.sh
+Debug Info: GREETINGS=
++Debug Info: pwd
+Debug Info: CURRENT_DIR=/Users/liumiao
+Debug Info: '[' _HELLO = _ ']'