admin管理员组

文章数量:1531441

2024年1月13日发(作者:)

Linux应用程序相关环境变量的设置

一、什么环境变量(linux下)

环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序的运行环境信息。 Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的应用程序运行环境进行定制,其方法就是修改相应的系统环境变量。通过环境变量的设置,可以很容易的修改一个牵涉到一个或多个应用程序的运行环境信息。

二、常用的应用程序相关环境变量

通常linux下,如果一个应用程序的安装路径不为/usr、/usr/local等系统默认的安装路径,则运行该应用程序时至少要指定环境变量PATH及LD_LIBRARY_PATH,来分别指定该应用程序命令的查找路径和共享库(动态链接库)的查找路径路径。(这两个用环境变量设置的路径通常在在默认路径之前查找)

除了常用的应用程序相关变量PATH及LD_LIBRARY_PATH,有些应用程序运行还需要一些特殊的环境变量。如:Qte4需要环境变量QTEDIR;Java需要环境变量JAVA_HOME和CLASSPATH 等。总之,在应用程序运行是必须保证其要求的环境变量已经设置好。

三、设置环境变量

3.1、用命令export设置环境变量

linux提供了一个专门的命令:export来设置环境变量。其使用方式如下:

语法:export [-fnp][变量名称]=[变量设置值]

说明:在shell中执行程序时,shell会提供一组环境变量。export可一次新增,修改或删除多个环境变量,供后续执行的程序使用。但export的效力仅及于该此登录操作,当当前shell关闭后export设置的环境变量也失去了效力。

参数:

-f 代表[变量名称]中为函数名称。

-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p 列出所有的shell赋予程序的环境变量。

示例:用export设置LD_LIBRARY_PATH 。

#export LD_LIBRARY_PATH = /opt/qte--x86/lib:

/opt/qte--x86/lib:$LD_LIBRARY_PATH

#export PATH = /opt/qte--x86/bin: /opt/qte--x86/bin:$ PATH

LD_LIBRARY_PATH、PATH环境变量可以有多个取值(路径),各取值之间用冒号隔开。上述命令中之说以加上:$LD_LIBRARY_PATH、:$PATH是保证此次LD_LIBRARY_PATH、PATH环境变量的设置不会覆盖以前的取值,这也是在设置可有多个取值环境变量是必须注意的问题。

3.2、修改相关环境定义文件来设置环境变量

上面提到过:export的效力仅及于当前shell登陆,当当前shell关闭后

export设置的环境变量也失去了效力。也就是说每次登陆shell时,都要用export设置相关环境变量。这显然是很麻烦的是,linux提供了更好的解决办法——环境定义文件。在环境定义文件中设置的环境变量的有效性不再限于当前shell,即使系统关机它们也保持有效。

Linux下,常用的环境定义文件有:/etc/environment、/etc/profile、~/.bashrc、/etc/ 。

各文件介绍如下:

/etc/environment:用于设置系统默认的PATH环境变量,如/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games ,用户也可以再行在里面添加PATH环境变量,设置非/usr安装路径应用程序的PATH环境变量。Ubuntn下,在该文件中不宜设置LD_LIBRARY_PATH(LD_LIBRARY_PATH not loading from .profile nor /etc/environment )。

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。推荐在/etc/profile.d目录下建立shell文件设置LD_LIBRARY_PATH及其他环境变量。

~/.bashrc: 该文件包含专用于当前用户的bash shell的环境信息,当登录时以及每次打开新的shell时,该文件被读取。该文件是个sh脚本文件,可在该文件中设置各种用户应用程序需需要的环境变量。

/etc/:该文件保存非标准共享库路径,并从/etc/.d/目录

下的文件中搜集共享库的非标准路径。推荐用户在/etc/.d里创建一个文件,并把非标准共享库路径加加到这个文件里。添加完之后要调用一下ldconfig,重新生成 /etc/不然这个添加的路径会找不到。这是替代指定LD_LIBRARY_PATH环境变量一个很好的方法。

以下是摘自网上的资料,很有参考价值:

/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

例如:编辑/etc/profile文件,添加CLASSPATH变量

# vi /etc/profile

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

2.2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】

用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

例如:编辑guok用户目录(/home/guok)下的.bash_profile

$ vi /home/guok/.e

添加如下内容:

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行$ source

/home/guok/.bash_profile不然只能在下次重进此用户时生效。

2.3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】

在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

3.环境变量的查看

3.1 使用echo命令查看单个环境变量。例如:

echo $PATH

3.2 使用env查看所有环境变量。例如:

env

3.3 使用set查看所有本地定义的环境变量。

unset可以删除指定的环境变量。

4.常用的环境变量

PATH 决定了shell将到哪些目录中寻找命令或程序

HOME 当前用户主目录

HISTSIZE 历史记录数

LOGNAME 当前用户的登录名

HOSTNAME 指主机的名称

SHELL 当前用户Shell类型

LANGUGE 语言相关的环境变量,多语言可以修改此环境变量

MAIL 当前用户的邮件存放目录

PS1 基本提示符,对于root用户是#,对于普通用户是$

本文标签: 环境变量设置文件用户环境