读书人

(转)shell环境变量以及set,env,export

发布时间: 2012-08-16 12:02:15 作者: rapoo

(转)shell环境变量以及set,env,export的区别

找到一个总结的不错的文档关于set env ?export的,故转载过来

?

?

转自:longxibendi的专栏 (感谢原作者的总结 *—*)

http://blog.csdn.net/longxibendi/article/details/6125075

?

?

?

一.shell环境变量的分类以及set env export的区别:

?

set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样

env:显示(设置)用户变量变量

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

?

举个例子来讲:

?

view plain
  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??

?

?

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

?

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

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

?

?

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

?

view plain
  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??

?

?

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

~/.bash_profile? 用户登录时被读取,其中包含的命令被执行

~/.bashrc? 启动新的shell时被读取,并执行

~/.bash_logout? shell 登录退出时被读取

?

此外,shell(这里指bash)的初始化过程是这样的:

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

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

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

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

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

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

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

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

这些步骤都执行完后,就出现提示符了,?ksh?默认提示符是?$.

?

?

五:常见的shell变量

PATH 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。??
ROOTPATH 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。??
LDPATH 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件。?
MANPATH 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面。??
INFODIR 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面。??
PAGER 这个变量包含了浏览文件内容的程序的路径(例如less或者more)。??
EDITOR 这个变量包含了修改文件内容的程序(文件编辑器)的路径(比如nano或者vi)。??
KDEDIRS 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料。?
CONFIG_PROTECT 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来。?
CONFIG_PROTECT_MASK 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来。

?

?

PATH:决定了shell将到哪些目录中寻找命令或程序
HOME:当前用户主目录
MAIL:是指当前用户的邮件存放目录。
SHELL:是指当前用户用的是哪种Shell。
HISTSIZE:是指保存历史命令记录的条数
LOGNAME:是指当前用户的登录名。?
HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。?
PS1:是基本提示符,对于root用户是#,对于普通用户是$。
PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。?
# PS1=" Hello,My NewPrompt :) "

?

读书人网 >操作系统

热点推荐