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

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

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

   ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台r L)[0a~+\-Z+x7M

一.shell环境变量的分类以及set env export的区别:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台+aW v7Ds0T|

c.f,NT2Sn1M-bv0

/i|;o[[.h\CRQ9m0

WuM%x#w-` MO0set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样

eG,Q"iJX$~0

&sWl%^ G2]0env:显示(设置)用户变量变量ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台$\!y'm#pIC

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台eLw#S$Iz x3_7V

export:显示(设置)当前导出成用户变量的shell变量。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台h$L GP"C0z@

Y K S9ox*M!Q0 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'B1_]9mhF@8z

|h vX-]*FA0举个例子来讲:

+_ o'Pw k0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台/|NS4qH ~$]+o3R[-r

  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
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#E)^-o$|e$p h:m c

0ao.]!GoE0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台0[ wA?Ra

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-WV s A8@Un

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台V0P}b"~

总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量.

"D$y~cv(X0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台0T`%`2fX:o/IV

^?S-w HF}5R0

,mWJ E\v+Y0二:使用unset命令来清除环境变量,注意set env export设置的变量,都可以用unset来清除的ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台`A9W&Th2|&g

O/O4q8L%w1Dt0

  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已经不存在了

%maT#m,\ xL&]1d0

Z8| a"Wb*Hv$h8l0H0

)l}#@s eS0 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 D`d}3u b@ s

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台2~#CCym7L

三:使用readonly命令设置只读变量

C5kADl4yMP'jg0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台(G-S)K+AHb

  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

M] i"b+j;s!_#^0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 JS5f,fk}!A-Mh

Wc,Z A!Rk_HoXXa0

}H!D)Y:M1S.K"y&Qn'o0

b&f;n*J}v+A0四:最根本的设置、更改变量的配置文件 ~/.bash_profile ~/.bashrc ~/.bash_logout

#s(Q3KUV$u6e#?,]fDa0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台i n9V$EU$u5i1e

~/.bash_profile 用户登录时被读取,其中包含的命令被执行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9?k c6@JdW

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台E;uu6o6B&_^3or

~/.bashrc 启动新的shell时被读取,并执行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9I)TW@5Y:X7D;?

E-HT/Q4?_3X0~/.bash_logout shell 登录退出时被读取

q7A l]+m {ds$@0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Tx6L a,U gh

wZ@,E8c0

Y;h8o:VB u)Y0此外,shell(这里指bash)的初始化过程是这样的:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台M `9oB3d*}

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

~f2Eh s`]x-L0

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

RRbCQ Z @,C0

3.bash 检查主目录下的文件.bash_profile 是否存在。

g(O)P:jEQD{ {%^0

4. 如果存在,bash 就读取該文件,否则,跳过ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3xWg;b7|0m e!`

5.bash 检查主目录下的.bash_login 是否存在。

c@x$\ b F0v~ o0Ts*k0

6. 如果存在,bash 就读取该文件,否则,跳过ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台U.Hr1wFmwM+A

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

GF~v2C4l!A0

8. 如果存在, bash 就读取该文件,否则,跳过。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*SS/?:zJ^)S!cr

这些步骤都执行完后,就出现提示符了, ksh 默认提示符是 $. ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 Ns6\m)y

gZ |e1lC r|0

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 e&o+Ll,j2Tk

五:常见的shell变量

K6^9PAj@0Y0

PATH 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。
A7u!pz;M-E.G+s*n%D c"l(s2U0ROOTPATH 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Q;c"]!I sY*YW1I*g c
LDPATH 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件。
%M_9x"G;FE0MANPATH 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面。
/^/C'M%l9p0INFODIR 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台:X9q7i~3\
PAGER 这个变量包含了浏览文件内容的程序的路径(例如less或者more)。
5w*fSQ$[Q@p0EDITOR 这个变量包含了修改文件内容的程序(文件编辑器)的路径(比如nano或者vi)。
\(_.^n'N0KDEDIRS 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料。
)mX7|1bzuQ_0CONFIG_PROTECT 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台W~5Gpz@,f@
CONFIG_PROTECT_MASK 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来。
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台L/["i:u$a;lJC;U

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台:R;g `^7l[6D

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台\ |$b |F

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台g a m O)['?5F5U `

0P"L/w j*D/{H4J0PATH:决定了shell将到哪些目录中寻找命令或程序ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台etj h;_
HOME:当前用户主目录
3Uv,nY-W G2S0MAIL:是指当前用户的邮件存放目录。
%{ qhEgc$o ys+_0SHELL:是指当前用户用的是哪种Shell。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台pjV Cf i O&q
HISTSIZE:是指保存历史命令记录的条数
c z(~Y*K%M'e0LOGNAME:是指当前用户的登录名。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台/ws*IHV h0[f
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
h2V.]| Qjv0LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台[;t7NvPJ1X9}r
PS1:是基本提示符,对于root用户是#,对于普通用户是$。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台N3U{o9F5iJ&m
PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台(D5M$bRO!` kv
# PS1=" Hello,My NewPrompt :) "

d7zx:`eg0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8c5Y/e4{#l ^3M6Qb

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台?5w4{%qv

] E%t0VM+P;Q T6w7s0

C5@\c1|6c%_)P5{+Q0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台P I(\'E"n*D7yD

+[#`T%a9C8IW0

声明:本文档可以随意更改,但必须署名原作者 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4rM W[Fa ]

0boKWp0作者:凤凰舞者 qq:578989855ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台{GB/rZd


TAG: export

 

评分:0

我来说两句

显示全部

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

Open Toolbar
博聚网