Linux下关于环境变量的一些心得
一、Linux下环境变量的定义
首先,环境变量分为两种,系统环境变量和用户环境变量。
系统环境变量对所有用户都有效,二用户环境变量只对某个用户有效。
Linux下,环境变量被分别保存在多个文件中。
第一级:
/etc/profile
该文件在用户第一次登录的时候被加载(?引用他处,为什么是第一次登录),也是操作系统定义环境变量时读取的第一个文件。
此文件为所有的用户设置环境信息。
在我使用的Ubuntu 10.10中,该文件默认并没有直接定义全局变量,而是通过读取/etc/profile.d 、/etc/profile.d/*.sh和/etc/bash.bashrc。
第二级:
/etc/environment
该文件是用户在登录操作系统之后,操作系统配置环境时所使用的第二个文件。
顾名思义,该文件中保存了一系列环境变量,这些变量将对所有的用户和终端起效。
到这一级为止,文件定义的都是系统环境变量,之后的文件都是在定义用户变量。
第四级:
~/.bashrc
该文件包含了专用于一个用户的bash的环境信息,每次登录或者新开shell的时候(包括在图形界面下打开新的终端),该文件被读取。
该文件只会在新开的终端中起效。原有终端不会受到影响。
~/.bash_logout
该文件在每次退出bash的时候被执行。
二、Linux下环境变量的使用
1、shell命令
set显示当前shell的变量,包括了当前用户的变量。
注意,"shell的变量"包括当前用户的一系列文件以及shell自身的变量,比如BASH、BASH_ARGC等。
shell变量的定义可以通过直接输入命令"aaa=bbb",来实现定义变量aaa的值为bbb。
在我手中的Ubuntu10.10中这个命令如果不带参数直接执行的话,不会显示变量,而是显示了大量的代码。
若要查询某个shell变量的值,可以使用命令"set|grep 变量名"。
env则只显示当前用户的变量。
export若不带参数则显示用户变量的shell变量,若带参数,则将该shell参数添加至用户变量。
readonly命令可以将变量设定为只读,只读的参数不能被修改或者删除。
2、C程序命令
getenv()返回一个环境变量。
setenv()设置一个环境变量。
unsetenv()清除一个环境变量。
3、常见的环境变量
PATH:决定了shell将在哪些目录中寻找命令和程序
HOME:当前用户的主目录
MAIL:当前用户的邮件存放目录
SHELL:当前用户用的是那种Shell
HISTSIZE:保存历史命令记录的条数
LOGNAME:当前用户的登录名
HOSTNAME:主机的名称。
LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量
PS1:基本提示符,对于root是#,对于普通用户为$,在我手中的ubuntu10.10中则是一个字符串,显示了用户名、系统名和当前目录名在内的信息。
PS2:是附属提示符,默认是">"。可以修改此环境变量来修改当前的命令符。