Go ahead every day !

Linux环境变量的设置

上一篇 / 下一篇  2008-06-02 11:46:14 / 个人分类:Linux

51Testing软件测试网1e:@l6v] hg@%A

1、引言
&OwB'ROI"X0
linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本文基于RedHat 9.0,详细讲解了环境变量定制的问题。

y\+Q1Y*uA0

2、变量简介51Testing软件测试网Z:G ki-D

Linux是一个多用户的操作系统每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。51Testing软件测试网}5V p+|5f`CTsWrK t

 51Testing软件测试网bE)a],Q;E)\

3、定制环境变量51Testing软件测试网[5PqiO1SA4[/xP

环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它Shell。根据发行版本的情况,bash有两个基本的系统级配置文件:/etc/bashrc/etc/profile些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通export来设置环境变量。51Testing软件测试网co(X~I.Z1V5AG Ib

 51Testing软件测试网!l&f c;i+Q:bd

3.1 使用命令echo显示环境变量51Testing软件测试网O`8u`d0QrC

51Testing软件测试网.Q:Ppnq G$M F9M.Y


v,j#U9_1x qrFw0

'Yz m d:T1O_0

#本例使用echo显示常见的变量HOME51Testing软件测试网0Z#Xs4}/P/R#y%^

$ echo $HOME  51Testing软件测试网/H+Eq,ii#GX'`GB

/home/lqm51Testing软件测试网O;m3K|y[

51Testing软件测试网;^![@o4fTs


51Testing软件测试网"[wJTr*\o

51Testing软件测试网9E(c9V5a7w7{jc%\ \

3.2设置一个新的环境变量

c tTQ*K A&Sf k3V{0
51Testing软件测试网#dW:~C C

&w_|#Qj2{3A0

$ export HELLO=”Hello!”51Testing软件测试网 moVs!{j4n+Zz

$ echo $HELLO51Testing软件测试网,?%G6x+xu"~*_(_%Lu

Hello!51Testing软件测试网0Y%Sn$y;A` T

C LwlY E$QI~0
51Testing软件测试网gaT,~ | EG

51Testing软件测试网/Z(o;U jo4A$GFh

3.3使用env命令显示所有的环境变量

(te.]eFx0

c6e?`A-W \]2J$mz0

\ l!c.i%J.E,z0

~7b![,{ q0

$ env51Testing软件测试网J#@sWW

SSH_AGENT_PID=1875

i9pz.VR#n0

HOSTNAME=lqm

,s$D"d[ }N\n3m0

SHELL=/bin/bash51Testing软件测试网5u8K&Y ka

TERM=xterm

)ao;T&e:m*anHT$Z0

HISTSIZE=1000

u)k,e!x_K v*~^Rh0

……51Testing软件测试网LCq([/dA*F1s

51Testing软件测试网 W`Y5DE"B H9[


X+ag+x-VgmJM0

:J$F\Q J&L@0

3.4 使用set命令显示所有本地定义的Shell变量

{;k:u+g8B[z0

k _6EI-y6`3Wu2^0

#Q_2P;M*ZP g#n051Testing软件测试网S ^,Ht[ W"U

$ set

ZN @!q[L0

BASH=/bin/bash

&e'KJl\:nh,fE0

……51Testing软件测试网-e&R5h~lmH!b2A

51Testing软件测试网]K ?__%G


0x At|q Q:B051Testing软件测试网d2jYdI)d+i ]d

3.5 使用unset命令来清除环境变量

6{oX/bOR+p0

51Testing软件测试网:[;n,P5{%gVP+l'VgJ&f7y


51Testing软件测试网4@%y O9N4J7r*Tpb

0]$oK+P7f0

$ export TEST=”test”      #增加一个环境变量TEST

YN,F9Iy6UK1}0

$ env | grep TEST           #此命令有输出,证明环境变量TEST已经存在了51Testing软件测试网/|yQ$m;\+RZ

TEST=test

6C6}mH E0c3C(H A!l!S0

$ unset $TEST               #删除环境变量TEST51Testing软件测试网3H3b@HG)k

$ env | grep TEST         #此命令无输出,证明环境变量TEST已经存在了51Testing软件测试网ab!S3C:f1Rmb!s

51Testing软件测试网3p3qmz6?~


]+|a]#[2s S051Testing软件测试网i0J+u _ }.kG-g

3.6 使用readonly命令设置只读变量

Db~4Sj&Lx-J3X0

如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:

f0I\T5T nh0

51Testing软件测试网x(a$~kd*aZ


51Testing软件测试网[r[`~{w b

Mm.D?M(? g[ r0

$ export TEST="Test..."                                       #增加一个环境变量TEST

4q5[+v'ogk*a0

$ readonly TEST                                                  #将环境变量TEST设为只读

+n S.qXN2Cw{w0

$ unset TEST                                                      #会发现此变量不能被删除51Testing软件测试网t%B&Y.@ K,i r&F

-bash: unset: TEST: cannot unset: readonly variable51Testing软件测试网} r Tr n \ox*b;Z
$ TEST="New"                                                   #
会发现此变量不能被修改

.D KU#]%Z'Dq6cR0

-bash: TEST: readonly variable51Testing软件测试网1KCE7Q0aVExP)s

2`-N.\+A2N xbS j!q)E0
51Testing软件测试网h2lj/W U7p+@o

51Testing软件测试网Q Tck/~ b

3.7 C程序来访问和设置环境变量51Testing软件测试网8\4V9ZkF8E

对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。51Testing软件测试网+R+tXi~$}0`

getenv()访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所访问的环境变量不存在,则会返回NULL

~4Nt*T[W a9z;EM)g0

setenv()在程序里面设置某个环境变量的函数。

:?%vv^tV0

unsetenv()清除某个特定的环境变量的函数。51Testing软件测试网~ CE~i

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

u%HfN0R0

51Testing软件测试网*Gd.aKbRP6?


a9r jg-I$k"bc&H051Testing软件测试网6F+?Bo,FE

#include <stdio.h>51Testing软件测试网 Z$O)@L9eWIr C'L

extern char**environ;

a%sIIjaM0

int main ()

vUW KF lcs}t0

{

YPT0oA ]0

char**var;

-aa }C%dZ ? V:K,a g0

for (var =environ;*var !=NULL;++var)51Testing软件测试网y2kV P(?:Z#xg&r

printf ("%s \n ",*var);51Testing软件测试网#Bg Jm7b

return 0;51Testing软件测试网+c9CHI1T

}

7{7]|n.^n0

51Testing软件测试网u` d6yYJhE ss


51Testing软件测试网oY!s;? S}prE

51Testing软件测试网6B,RN9|[E+Z \,~0k

3.8     通过修改环境变量定义文件来修改环境变量。

-Vh%p3F G7N _p8f0

需要注意的是,一般情况下,这仅仅对于普通用户适用,避免修改根用户的环境定义文件,因为那样可能会造成潜在的危险。(在用户目录下修改.bash_profile,只对bash生效。修改/etc/profile, 对任何用户都生效。)51Testing软件测试网ts-D_/J zoS

T*?yq'C ^#~0og;X0

:g e}u ]8hF2j051Testing软件测试网ru8mno5jk B$U

$cd                                  #到用户根目录下51Testing软件测试网[ XdGJ

$ls -a                                #查看所有文件,包含隐藏的文件51Testing软件测试网"`1wX5?{8a3mAz:ZZ

$vi .bash_profile                #修改环境变量定义文件

/@6A(`G3g5ONtNw0

~ M7lt4N(?0
51Testing软件测试网o?,n%X l;J

.G.JxJ%c[$f0

然后编辑你的PATH声明,其格式为:

9~ ~5qe{$S%l0G%Sn0

PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>51Testing软件测试网0N~7F(c'hx$T z4wk K%T

你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:$source .bash_profile

o7c4Q"]-^pD6vS,jA7n0

需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。完成后,可以通过$ echo $PATH查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于shell搜索的路径之外的程序了。

m,L#rA/e7WXD0

 

sJ ?9N)@e$_"LH0

 

y"Re[1i4D o%G0

TAG: Linux

 

评分:0

我来说两句

Open Toolbar