商务合作加Q:411239339

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

浏览:629次阅读
没有评论

共计 2634 个字符,预计需要花费 7 分钟才能阅读完成。

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

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

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

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

举个例子来讲:

  [c-sharp] view plaincopy

 

  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 来清除的

[c-sharp] view plaincop

 

  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 命令设置只读变量

[c-sharp] view plaincopy

 

  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 :) "

作者:凤凰舞者  qq:578989855

正文完
扫码赞助
post-qrcode
 0
果子
版权声明:本站原创文章,由 果子 于2015-03-04发表,共计2634字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。
评论(没有评论)