像我儿子一样永远保持好奇和梦想

[]shell环境变量以及set,env,export的区别

上一篇 / 下一篇  2012-09-07 10:03:07 / 个人分类:linux

  

!cF!Ylx ZR(f0一.shell环境变量的分类以及set env export的区别:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台gSzKLZ!xkk4i

V2^2SS3sqxI0

!T-_/qZ7]1k{(bJ u1B0x2Y3B0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台/J3PW*A dL%F

set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9p@{%?5DAN w8|)w g

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台x q8C2f Q)j

env:显示(设置)用户变量变量ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台w2b'e8K8`3{C/Jh

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(q;\U?Jl*w

export:显示(设置)当前导出成用户变量的shell变量。

)L+EkX,x8a^ Z_0

D*k0s9ke"YJC d0

%yg'^og:~0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,njm~Uav

举个例子来讲:

qf:s9P C k p1sFCO9D0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台i,?(q9[v8]?{D

  1. [oracle@zhou3 ~]$ aaa=bbb --shell变量设定
  2. [oracle@zhou3 ~]$ echo $aaa
  3. bbb
  4. [oracle@zhou3 ~]$ env| grep aaa --设置完当前用户变量并没有
  5. [oracle@zhou3 ~]$ set| grep aaa --shell变量有
  6. aaa=bbb
  7. [oracle@zhou3 ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有
  8. [oracle@zhou3 ~]$ export aaa --那么用export 导出一下
  9. [oracle@zhou3 ~]$ env| grep aaa --发现用户变量内存在了
  10. aaa=bbb

(H {|_F#f kdcq c$p0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Il q0A&T;C7Q!m

? DtE%_9Xs0

4sL d0z#[4VK-]0

|7] mS0J;t!@A3I0总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量.ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Mx XnfqHv%F

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8A/| a.n+I+AW ~

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;I `S9x2g'T2i1N)b)Md

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台d;V3TaZ

二:使用unset命令来清除环境变量,注意set env export设置的变量,都可以用unset来清除的

yZ6vr6wU o0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台F:UMC"E

  1. 清除环境变量的值用unset命令。如果未指定值,则该变量值将被 设为NULL。示
  2. 例如下:
  3. $ export TEST="Test..." #增加一个环境变量TEST
  4. $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
  5. TEST=Test...
  6. $ unset $TEST #删除环境变量TEST
  7. $ env|grep TEST #此命令没有输出,证明环境变量TEST已经不存在了
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台-zd:cK2COEl

S/?2F7M&NGQ2E0m0

5{.BNd#k6nI:W0 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"lL{x0h;K N@H

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8z!o"g.h TGZ$H

三:使用readonly命令设置只读变量ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台2xY!Kv,SDo1Do

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台$dy:LB|f i

  1. 使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
  2. $ export TEST="Test..." #增加一个环境变量TEST
  3. $ readonly TEST #将环境变量TEST设为只读
  4. $ unset TEST #会发现此变量不能被删除
  5. -bash: unset: TEST: cannot unset: readonly variable
  6. $ TEST="New" #会发现此也变量不能被修改
  7. -bash: TEST: readonly variable
ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台p{i"`tv

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9Rq9U Q@,h z;W

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Etzci;t ]

!f:@7\ k{2H@0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,y(H%RYfj

四:最根本的设置、更改变量的配置文件 ~/.bash_profile ~/.bashrc ~/.bash_logout

4cI0Rh1|@ Q0

:?2Io}"p;L*W#CK0~/.bash_profile 用户登录时被读取,其中包含的命令被执行

Pfp QU t0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台/} GQ%j _c#gd

~/.bashrc 启动新的shell时被读取,并执行ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:M `PH2na;M;k$t

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台O%]C8Ie

~/.bash_logout shell 登录退出时被读取ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台$a+b(K{8{/YC5{

ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Q)Zq$B4A1w{

KT.L,T$@:Pa0

0wR H}/f _:f0此外,shell(这里指bash)的初始化过程是这样的:ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;IpN m-D _I2f\MhE A

1.bash 检查文件/etc/profile 是否存在

w-n@[ wf%W(e8Q0

2. 如果存在,bash 就读取该文件,否则,跳过ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台#U bWM9m8kY

3.bash 检查主目录下的文件.bash_profile 是否存在。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'd:bb:V0Bu c)f

4. 如果存在,bash 就读取該文件,否则,跳过

;h/bn,izV:S0

5.bash 检查主目录下的.bash_login 是否存在。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台2Zl/m,} c*RnO

6. 如果存在,bash 就读取该文件,否则,跳过

j~? q[-`'d Q8F]0

7.bash 检查主目录下的文件.profile 是否存在

.yl^v waD/~~H3? F0

8. 如果存在, bash 就读取该文件,否则,跳过。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 Ix0u s2eLx:M%G

这些步骤都执行完后,就出现提示符了, ksh 默认提示符是 $. ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台U#s/s:~ x+GS

[ |9o7D7_6q5Uv(?s3c0

w0XuN1P0

五:常见的shell变量ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台x+GXNvG@'{ e2^'t

PATH 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台J#KSxi(X PG ] ^0t
ROOTPATH 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。
a"} J"v0_0LDPATH 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件。
-EX O~l zO0MANPATH 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面。
yA%R%ZC*U T7{D0INFODIR 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,?Ms&Gl I i
PAGER 这个变量包含了浏览文件内容的程序的路径(例如less或者more)。
0S[@8L-y8^s~0EDITOR 这个变量包含了修改文件内容的程序(文件编辑器)的路径(比如nano或者vi)。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台v8[&q gl b
KDEDIRS 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,_ai`o+[ea
CONFIG_PROTECT 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台^ri*^C!x0a}5F2A$p
CONFIG_PROTECT_MASK 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来。

n,p,h w4Z\.[u0

M H u Q-r7D8W0

h/L S.u&^ X+}0

1j+T"aRY'n:q0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8aw3e*R!d$\J

PATH:决定了shell将到哪些目录中寻找命令或程序
!q\+L8~&DFb0HOME:当前用户主目录
6a}:fj6j0MAIL:是指当前用户的邮件存放目录。ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 d} q }3`9s V
SHELL:是指当前用户用的是哪种Shell。
6YL(ZzT CNl0HISTSIZE:是指保存历史命令记录的条数ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台D l;lT"U$z*?tCm
LOGNAME:是指当前用户的登录名。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:C"}BMC$IG
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
a\@"qYd3B0f0LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
~9dxY!x3jX2\0PS1:是基本提示符,对于root用户是#,对于普通用户是$。
l0a(q1j&v6?MG(R3q(|0PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7u,D.sQ&^-T:a:I0L#w:c
# PS1=" Hello,My NewPrompt :) "

{u[8A eA%Q [0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台3TAmSV+|

g!etAi Hk0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台` f!H!l+De

j:Oy+bi;X9\0

x%w}sz+@0ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台^?9DN"~,H9b-D;k.Y_6A

声明:本文档可以随意更改,但必须署名原作者 ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台bv1{{4N}*E

'AE-?~u!C'K0作者:凤凰舞者 qq:578989855ET创芯网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台?\vzt-ZY.e;oK#O


TAG: export

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar