日志标签 ‘Bash’

shell中的环境变量和自定义变量

2011年10月6日

Shell中的变量可以简单分为环境变量和自定义变量。环境变量有时也被称为全局变量,它是操作系统为Shell事先定义的一组变量,这些变量共同描述了当前Shell运行的系统环境;而自定义变量则是用户根据所需而定义的变量,它也被称为局部变量。为了区分两者的不同,环境变量通常用大写字母表示,而自定义变量通常使用小写子母表示。

1.环境变量

环境变量是一组变量的集合,它们描述了当前Shell运行的环境信息。最典型的环境变量即为PATH,它描述了可执行文件的路径信息。通过env命令可以查看当前Shell环境下所有环境变量及其内容。

edsionte@edsionte-desktop:~$ env
TERM=xterm
SHELL=/bin/bash
USER=edsionte
USERNAME=edsionte
PATH=/home/edsionte/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/edsionte/bin
PWD=/home/edsionte

…………

下面对部分环境变量做以解释:

HOME:表示当前用户的主目录。当输入cd或cd ~命令时,就会用到这个变量,如果更改了这个变量的值,那么使用上述命令的结果也会相应的改变。

SHELL:表示当前的shell环境所使用的shell程序。常见的shell程序有/bin/bash和/bin/sh,Linux中默认使用的是/bin/bash。

PWD:shell当前所在的工作目录,这个变量的值是通过pwd命令得到的。

USER:当前的用户名。

2.自定义变量

Shell除了环境变量,还包括用户自定义的变量。env命令查看的只是所有环境变量,而set命令既可以查看环境变量也可以查看自定义变量。比如:

edsionte@edsionte-desktop:~$ myvar=test
edsionte@edsionte-desktop:~$ env | grep myvar
edsionte@edsionte-desktop:~$ set | grep myvar
myvar=test

3.环境变量和自定义变量之间的转换

环境变量有在Linux下的shell程序默认为Bash,因此每一个Bash其实都是一个进程,在当前Bash下输入ps命令则可以查看该Bash的PID。对于环境变量而言,每个Bash进程都可以对其进行引用;而对于用户自定义的变量,只有对其定义的Bash进程可以引用它,其他的Bash进程甚至是其子进程均不可以引用。这也是环境变量和自定义变量的的主要区别之一。

从进程内存映像的结构分布可以很好的解释环境变量和自定义变量之间的差异。在Linux系统中,所有的Bash进程都是gnome-terminal进程的孩子或孙子,而gnome-terminal进程是由init进程创建的,由于环境变量保存在gnome-terminal进程的数据段,因此它的孩子或孙子(即Bash进程的孩子)均可以继承数据段的数据,即所有Bash进程都可以访问环境变量。对于自定义变量而言,它位于每个Bash进程的栈中,而每个进程它都有自己独立的段,因此自定义变量是不能被继承的,即自定义变量不能被其他bash进程引用。

那么,环境变量和自定义变量之间如何相互转换呢?通过export命令和declare命令即可完成。如果要将一个自定义变量转化为环境变量,则需要使用下述命令:

edsionte@edsionte-desktop:~$ myvar=test
edsionte@edsionte-desktop:~$ env | grep myvar
edsionte@edsionte-desktop:~$ export myvar
edsionte@edsionte-desktop:~$ env | grep myvar
myvar=test

如果要将环境变量转化为自定义变量,则需使用下述命令:

edsionte@edsionte-desktop:~$ declare +x myvar
edsionte@edsionte-desktop:~$ env | grep myvar
edsionte@edsionte-desktop:~$ echo $myvar
test

关于exprot和declare命令更多的用法,可以参考man手册。

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key