Chinaunix首页 | 论坛 | 博客

分类: LINUX

2014-02-21 17:29:07

原文地址:http://blog.163.com/linzhigui1988@126/blog/static/10188658120114275285860/
    1)什么是Linux的环境变量啊? 
下面举例说明什么是环境变量,及其作用,如果是PATH的话就是指你运行命令所在的目录,
比如你echo $PATH,看到的结果类似于:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

说明在这些(用:分开的)目录里包含的了你的(还有系统的)命令,你只需要在终端里输入命令的名字(比如ls)就可以执行命令,而不是输入/bin/ls来执行它。但如果你想要执行/opt里的xkin命令的话,直接在终端里输入xkin是不行的,因为/opt没在PATH里,而是应该输入/opt/xkin来执行xkin这个程序。

想把/opt加入到PATH里的话可以通过修改/etc/profile或 ~/.profile来实现,具体的做法下面会详细介绍。其实环境变量并不是只局限于PATH,在linux系统下可以输入env这个命令看一下,可以看到PATH只是其中一个环境变量,它是shell进行寻找命令时所用到的路径,

这个你完全可以改,当然建议是不要乱改。环境变量有很多,比如你的历史命令长度(即记录多少条你曾经输入过的命令,默认是1000),开机时启用的服务,总之进入shell时所需的设置都在这里面。

而Linux的启动顺序。。。似乎所有的系统启动顺序都是一样的吧,先是读取引导扇区,然后加载内核,然后就进入系统了,可以看看《鸟哥的Linux私房菜》,讲的还不错的

2)通常如何设置Linux的环境变量?
“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数(如果需要参数),回车即可。

如果不在标准位置,文件名前面需要加上完整的路径.不过每次都这样跑就太麻烦了,一个“一劳永逸”的办法是把这个路径加入环境变量.命令 “PATH=$PATH:路径”可以把这个路径加入环境变量,但是退出这个命令行就失效了.要想永久生效,需要把这行添加到环境变量文件里.有两个文件可选:“/etc/profile”和用户主目录下的“.bash_profile”,“/etc/profile”对系统里所有用户都有效,用户主目录下的“.bash_profile”只对这个用户有效.
方法一:用export命令(fedora 9已经实践通过)

将QtE的可执行文件路径/usr/local/Trolltech/QtEmbedded-4.5.2/bin,加入到PATH环境中,一遍用qmake命令时,会自动使用该路径下的qmake命,方法如下:

#export PATH=${PATH}:/usr/local/Trolltech/QtEmbedded-4.5.2/bin

不过这个方法有个缺点,就是每次重启shell,都要重新用这个方法,再次设置。
方法二:修改profile文件(fedora 9已经实践通过)

当然为了以后避免每次开机后到要将Qt的可执行文件路径加入到PATH环境中,每次开机都要执行一句#export PATH=${PATH}:/usr/local/Trolltech/QtEmbedded-4.5.2/bin

来个一劳永逸,我把其设置到环境变量中去了,

#vi /etc/profile

在最后添加下面一句(注意里面不是#export,且是$PATH ,而不是${PATH},那个“$PATH”表示原先设定的路径仍然有效,)

export PATH="$PATH:/usr/local/Trolltech/QtEmbedded-4.5.2/bin"

为了不用重启就生效,执行

#. /etc/profile (注意,”.”和“/etc/profile”中间有个空格)然后检查下是不是设置OK

[root@tom books]# echo $PATH

usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/sbin:/sbin:/usr/

local/bin:/usr/bin:/bin:/opt/real/RealPlayer:/usr/local/arm/4.3.2/bin:/root/bin:/opt/real/

RealPlayer:/usr/local/arm/4.3.2/bin:/opt/real/RealPlayer:/opt/real/RealPlayer:/opt/real/RealPlayer:

/opt/real/RealPlayer:/opt/real/RealPlayer:/usr/local/Trolltech/QtEmbedded-4.5.2/bin

可以看到有了:/usr/local/Trolltech/QtEmbedded-4.5.2/bin,说明已经添加OK了
方法三:修改.bashrc文件(还没真正实践)

# vi /root/.bashrc
里面加入:export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

按esc,按:,输入q!,回车.放弃更改退出. 按esc,按:,输入wq,回车.保存更改退出.|

修改.bashrc立即生效指令 source ~/.bashrc,以及

对.bashrc文件修改后不能当时生效,先退出当前登录,重新登录生效.

后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:
# echo $PATH
看看输出里面是不是已经有了/my_new_path这个路径了.

3)设置Linux的环境变量,语法解释
a)注意:在修改了PATH值或任何环境变量后,都要用export将其输出,新的PATH值才能生效. 
b)“PATH=$PATH:路径1:路径2:...:路径n”,意思是可执行文件的路径包括原先设定的路径,也包括从“路径1”到“路径n”的所有路径.当用户输入一个一串字符并按回车后,shell会依次在这些路径里找对应的可执行文件并交给系统核心执行.那个“$PATH”表示原先设定的路径仍然有效,注意不要漏掉.某些软件可能还有“PATH”以外类型的环境变量需要添加,但方法与此相同,并且也需要注意“$”. 
c)那个“$PATH”表示原先设定的路径仍然有效。
d)注意,与DOS/Window不同,UNIX类系统环境变量中路径名用冒号分隔,不是分号.另外,软件越装越多,环境变量越添越多,为了避免造成混乱,建议所有语句都添加在文件结尾,按软件的安装顺序添加.

格式如下():

# 软件名-版本号

PATH=$PATH:路径1:路径2:...:路径n

其他环境变量=$其他环境变量:...

在“profile”和“.bash_profile”中,“#”是注释符号,写在这里除了视觉分隔外没有任何效果.

例如:vim /etc/bashrc
修改其中的LD_LIBRARY_PATH 与 PKG_CONFIG_PATH 变量,将多个export写到一条语句内,对这些环镜变量来看,清晰且不会重复.
export G_BROKEN_FILENAMES=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/firefox
export XMODIFIERS=@im=SCIM
#export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
#export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/opt/gtk/lib
#export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
#export PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig:$PKG_CONFIG_PATH
#export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH
#export PKG_CONFIG_PATH=/usr/local/pkgconfig:$PKG_CONFIG_PATH
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig:usr/X11R6/lib/pkgconfig:/usr
/local/pkgconfig:/opt/gtk/lib/pkgconfig

设置完毕,注销并重新登录,设置就生效了.如果不注销,直接在shell里执行这些语句,也能生效,但是作用范围只限于执行了这些语句的shell.相关的环境变量生效后,就不必老跑到软件的可执行文件目录里去操作了.

说明:环境变量还可以引用连接:in -s  /home/software   /usr/local/lib ,想一个虚拟变量。

阅读(1359) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~