ubuntu下设置环境变量

http://hi.baidu.com/sujinsujin/item/f3fd3bed56a408ddeb34c9eb

 

/etc下:(bash.bashrc[Ubuntu] 或 bashrc[CentOS]); environment; profile
普通用户及root用户家目录下:.bashrc;(.profile[Ubuntu]或.bash_profile[CentOS])


环境变量配置文件
1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。


2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。


3、~/.bash_profile:在登录时用到的第三个文件是.bash_profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。/etc/bash.bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。


4、~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

几个文件的优先级:1>2>3


在linux下,如果是bash环境,用户登录时读取设置文件的顺序是/etc/profile --> ~/.bash_profile --> ~/.bashrc --> /etc/bash.bashrc。注意在~/.bash_profile这一步,如果没有~/.bash_profile ,则默认读取~/.bash_login,如果没有~/.bash_login 才读取~/.profile。


根据发行版本的情况,有两个基本的系统级配置文件:/etc/bash.bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash),后者在不同shell中固定。shell变量是局部的,而环境变量是全局的。


注意:尽量避免修改root用户的环境变量配置文件,因为那样可能会造成潜在的危险。最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。


使用:
把设置的环境变量给所有用户使用:/etc/bashrc;/etc/profile
修改全局的环境变量在/etc/profile
修改某个用户的环境变量在/home/用户名/.bash_profile

相关命令:


1、echo显示环境变量
# echo $HOME
/root


2、export设置环境变量
$ export HELLO=”Hello!”


3、env显示所有环境变量
$ env


4、set显示所有本地定义的shell变量
$ set


5、unset清除环境变量
$ export TEST=”test”
$ env | grep TEST #此命令有输出,证明环境变量TEST已经存在了
TEST=test
$ unset TEST        #注意不是unset $TEST !!!
$ env | grep TEST #此命令无输出,证明环境变量TEST已经不存在了


6、readonly设置只读变量(变量不可以被修改或清除)
$ export TEST=”Test”
$ readonly TEST

让/etc/profile的修改立即生效:
1)$.  /etc/profile          注意:.和/etc之间有空格
2)$source  /etc/profile
如果/etc/profile中配置的环境变量无法在root用户下使用,可以用sudo su - 来加载环境变量。
实践经验:
在/etc/profile下添加export PATH=$PATH:/sbin
重启后:
1)$ifconfig                    可以执行
2)$sudo su
#ifconfig                   不可以执行
3)$sudo su -
#ifconfig                    可以执行
4)$su
#ifconfig                    可以执行
5)$ sudo -H ifconfig       可以执行


常见的环境变量
PATH      决定了shell将到哪些目录中寻找命令或程序
HOME      当前用户主目录
HISTSIZE    历史记录数
LOGNAME     当前用户的登录名
HOSTNAME    指主机的名称
SHELL      前用户Shell类型
LANGUGE     语言相关的环境变量,多语言可以修改此环境变量
MAIL      当前用户的邮件存放目录
PS1       基本提示符,对于root用户是#,对于普通用户是$
PS2       附属提示符,默认是“>”


通过C程序来访问和设置环境变量
对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。
getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL。
setenv()在程序里面设置某个环境变量的函数。
unsetenv()清除某个特定的环境变量的函数。


另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可以打印出当前运行环境里面的所有环境变量:


#include <stdio.h>
extern char**environ;
int main ()
{
char**var;
for (var =environ;*var !=NULL;++var)
printf (”%s \n “,*var);
return 0;
}

另一篇:

第一步  系统级设置

读取/etc/profile文件,再根据/etc/profile文件的内容去读取其他附件的设置文件,例如/etc/profile.d/*.sh等


第二步  个人设置

根据不同的用户,到家目录去读取~/.bash_profile或~/.bash_login或~/.profile设置文件
其中:
这三个文件通常只要一个即可,不过存在顺序上的差异:bash启动时,会先去读取~/.bash_profile,找不到时就去读取~/.bash_login,再找不到时则读取~/.profile

根据不同的用户,到家目录去读取~/.bashrc文件


所以登陆bash后,最终读取的设置文件是~/.bashrc,通常可以将个人的一些常用的alias或者PATH等环境变量或者自定义变量都写到这个文件。

 

另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是~/.bash_profile; ~/.bash_login或 ~/.profile其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如我用的是Ubuntu,我的用户文件夹下默认的就只有~/.profile文件。
 

你可能感兴趣的:(ubuntu下设置环境变量)