十二. Linux系统的环境变量的功能

来源:互联网 发布:装linux系统 双系统 编辑:程序博客网 时间:2024/06/01 13:07

1.  查看当前所有环境变量的命令: env  和 export,set, declare 。env  和 export两个命令列出的环境变量一样,不过export有其他额外的功能。

2.  系统中一些重要的环境变量:

(1)HOME : 代表使用者的家目录。我们可以使用 #cd  ~ 去到使用者的家目录,或者利用 cd就可以直接回到使用者家目录了 有很多程序都可能会取用到这个变量的值。


(2)SHELL : 告知我们,目前这个环境使用的 shell是哪个程序,如果是 bash 的话,预设是/bin/bash  。

(3)HISTSIZE : 这个与『历史命令』有关,亦即是, 我们曾经下达过的指令可以被系统记录下来,而记录的『笔数』则是由这个值来设定的。

(4)MAIL : 当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱档案 (mailbox)。

(5) PATH : 就是执行文件搜寻的路径,目录与目录中间以冒号(:)分隔, 由于档案的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的喔。

(6)LANG : 这个重要!就是语系档案啰~很多数据都会用到他, 举例来说,当我们在启动某些 perl的程序语言档案时,他会主动的去分析语系数据文件, 如果发现有他无法解析的编码语系,可能会产生错误喔!一般来说,我们中文编码通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,这两个编码偏偏不容易被解译出来,所以,有的时候,可能需要修订一下语系数据。

(7)RANDOM : 这个玩意儿就是『随机随机数』的变量啦!目前大多数的 distributions 都会有随机数产生器,那就是 /dev/random 这个档案。 我们可以透过这个随机数档案相关的变量 ($RANDOM)来随机取得随机数值喔。在 BASH 的环境下,这个 RANDOM 变量的内容,介于 0~32767 之间,所以,你只要 echo $RANDOM 时,系统就会主动的随机取出一个介于 0~32767 的数值。万一我想要使用 0~9 之间的数值呢?呵呵~利用 declare 宣告数值类型, 然后这样做就可以了。
# declare  -i  number=$RANDOM*10/32767  ;  echo  $number
8         <== 此时会随机取出 0~9 之间的数值喔。

3.  set 命令查看所有变量,包括环境变量和自定义变量

4. 特殊变量:

(1)$ :(关于本 shell 的 PID)


(2)? :(关于上个执行指令的回传码)『上个执行的指令所回传的值』, 上面这句话的重点是『上一个指令』与『回传值』两个地方。当我们执行某些指令时, 这些指令都会回传一个执行后的代码。一般来说,如果成功的执行该指令,则会回传一个 0 值,如果执行过程发生错误,就会回传『错误代码』才对!一般就是以非为 0 的。
                                       

5.  自定义变量转成环境变量命令: export 

(1)自定义变量与环境变量的区别就在于可否被子进程所引用。

(2)当我们登入 Linux 并取得一个 bash 之后, 你的 bash 就是一个独立的程序, 被称为 PID 的就是。 接下来你在这个 bash 底下所下达的任何指令都是由这个 bash 所衍生出来的, 那些被下达的指令就被称为子程序了。 我们可以用底下的图示来简单的说明一下父程序与子程序的概念:


(3)如上所示, 我们在原本的 bash 底下执行另一个 bash , 结果操作的环境接口会跑到第二个 bash 去(就是子程序) , 那原本的 bash 就会在暂停的情况 (睡着了, 就是 sleep) 。 整个指令运作的环境是实线的部分! 若要回到原本的 bash 去, 就只有将第二个 bash 结束掉 (下达 exit 或 logout) 才行。

(4)因为子程序仅会继承父程序的环境变量, 子程序不会继承父程序的自定义变量啦,所以你在原本 bash 的自定义变量在进入了子程序后就会消失不见, 一直到你离开子程序并回到原本的父程序后, 这个变量才会又出现。

(5)换个角度来想, 也就是说, 如果我能将自定义变量变成环境变量的话, 那就可以让该变量值继续存在于子
程序了。故执行: #export   变量名称

6.  变量的有效范围:环境变量可以被子进程引用,自定义变量则不可以。

     环境变量=全域变量
     自定义变量=区域变量

0 0
原创粉丝点击