Linux系统常用环境变量说明
20140608 Chenxin
env export 和 set 的分别(环境变量的查看)
新机器
env |wc -l 显示的是系统环境变量,同export(数量较少)
29
export |wc -l
29 经过多台机器检验,export命令看到的变量数目和env命令看到的一样
set |wc -l 显示的是所有本地环境变量(数量很多)
63
hello=123 这里增加一个变量,看效果
env |wc -l
29
export |wc -l
29
set |wc -l
64 这里增加了1个hello的变量
生产机器:
env|wc -l
35
export |wc -l
35
set|wc -l
112
- 显示环境变量HOME
- 设置一个新的环境变量hello. export HELLO="Hello!"
- 使用env命令显示所有的环境变量(同export命令,变量数量比set看到的少)
- 使用set命令显示所有本地定义的Shell变量
- 使用unset命令来清除环境变量
set可以设置某个环境变量的值。
清除环境变量的值用unset命令。
如果未指定值,则该变量值将被设为NULL。
示例如下:
$ export TEST="Test..." #增加一个环境变量TEST
$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
$ unset $TEST #删除环境变量TEST
$ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了 - 使用readonly命令设置只读变量
如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
$ export TEST="Test..." #增加一个环境变量TEST
$ readonly TEST #将环境变量TEST设为只读
$ unset TEST #会发现此变量不能被删除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #会发现此也变量不能被修改
-bash: TEST: readonly variable
环境变量的设置位于/etc/profile文件
如果需要增加新的环境变量可以添加下属行
export path=$path:/path1:/path2:/pahtN
Linux的变量种类
按变量的生存周期来划分,Linux变量可分为两类:
1.1 永久的:需要修改配置文件,变量永久生效。
1.2 临时的:使用export命令声明即可,变量在关闭shell时失效。
设置变量的三种方法
2.1 在/etc/profile文件中添加变量
注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
2.2 在用户目录下的.bash_profile文件中增加变量
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。
2.3 直接运行export命令定义变量(只对当前shell(BASH)有效(临时的))
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的.
常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序.系统就从这些目录里寻找可执行文件.具体见附件.
ROOTPATH 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。
LDPATH(LD_LIBRARY_PATH) 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件.具体见附件.
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量.
MAIL 当前用户的邮件存放目录.
PS1 基本提示符,对于root用户是#,对于普通用户是$.
MANPATH 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面.
INFODIR 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面.
PAGER 这个变量包含了浏览文件内容的程序的路径(例如less或者more).
EDITOR 这个变量包含了修改文件内容的程序(文件编辑器)的路径.比如nano或者vi.
KDEDIRS 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料.
CONFIG_PROTECT 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来.
CONFIG_PROTECT_MASK 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来
附件:
1.路径变量PATH
当用户在某工作目录执行一个命令或者可执行程序时,若当前路径下不存在该程序,则系统将从PATH路径列表中查找指定的应用程序.
等号后边的表达式中,多个路径以英文冒号分隔。最后一定要加入$PATH。
2.添加库默认加载路径LD_LIBRARY_PATH
export LD_LIBRARY_PATH={YourPath}:$LD_LIBRARY_PATH
加入此环境变量的目的是允许系统从用户自定义的目录中加载库.
这样如果你有一个软件,需要依赖很多库,但又不想破坏系统原有的纯净,则可将所有库放入一个文件夹内,然后将该文件夹添加至LD_LIBRARY_PATH环境变量。
3.添加gcc默认的include目录C_INCLUDE_PATH
export C_INCLUDE_PATH={YourPath}:$C_INCLUDE_PATH
如果你使用gcc来编译你的C程序,你又安装了某个第三方的C库。
你可以将库中的头文件放到一个目录中,然后将该目录作为gcc默认的查找头文件目录。
这样你在编译的时候就可以少加入一个“-I”参数,编译器会自动从原有目录和你设置的目录中查找引用的头文件。
4.添加g++默认的include目录CPLUS_INCLUDE_PATH
export CPLUS_INCLUDE_PATH={YourPath}:$CPLUS_INCLUDE_PATH
意义同上面的那一条相同,只不过是针对g++编译器的。