|
|
51CTO旗下网站
|
|
移动端

3.2 环境变量

《跟老男孩学Linux运维:Shell编程实战》本书是一本较完整的Shell编程实战型图书,并非大而全,但处处可以体现实战二字,大多内容取于企业实战,并结合老男孩十几年的运维工作和教学工作进行了梳理。本节为大家介绍环境变量。

作者:老男孩来源:机械工业出版社|2017-04-21 10:28

3.2 环境变量

环境变量一般是指用export内置命令导出的变量,用于定义Shell的运行环境,保证Shell命令的正确执行。Shell通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器、Shell脚本和各类应用。

环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失,因此,如果希望永久保存环境变量,可在用户家目录下的.bash_prof?ile或.bashrc(非用户登录模式特有,例如远程SSH)文件中,或者全局配置/etc/bashrc(非用户登录模式特有,例如远程SSH)或/etc/prof?ile文件中定义。在将环境变量放入上述的文件中后,每次用户登录时这些变量都将被初始化。

按照系统规范,所有环境变量的名字均采用大写形式。在将环境变量应用于用户进程程序之前,都应该用export命令导出定义,例如:正确的环境变量定义方法为export OLDGIRL=1。

有一些环境变量,比如HOME、PATH、SHELL、UID、USER等,在用户登录之前就已经被/bin/login程序设置好了。通常环境变量被定义并保存在用户家目录下的.bash_prof?ile文件或全局的配置文件/etc/prof?ile中,具体的环境变量说明参见表3-1。

表3-1 部分bash环境变量展示(执行env命令后获得)

(续)

在查看设置的变量时,有3个命令可以显示变量的值:set、env和declare(替代早期的typeset)。set命令输出所有的变量,包括全局变量和局部变量;env命令只显示全局变量;declare命令输出所有的变量、函数、整数和已经导出的变量。set -o命令显示bash Shell的所有参数配置信息。

范例3-1:set、env和declare输出。

  1. [root@oldboy ~]# env|tail  
  2. SHLVL=1 
  3. HOME=/root  
  4. LOGNAME=root 
  5. CVS_RSH=ssh 
  6. MODULESHOME=/usr/share/Modules  
  7. LESSOPEN=||/usr/bin/lesspipe.sh %s  
  8. G_BROKEN_FILENAMES=1 
  9. BASH_FUNC_module()=() {  eval `/usr/bin/modulecmd bash $*`  
  10. }  
  11. _=/bin/env  
  12. [root@oldboy ~]# declare|tail  
  13. _module_not_yet_loaded ()  
  14. {  
  15.     comm -23 <(_module_avail|sort) <(tr : '\n' <<<${LOADEDMODULES}|sort)  
  16. }  
  17. module ()  
  18. {  
  19.     eval `/usr/bin/modulecmd bash $*`  
  20. }  
  21. [root@oldboy ~]# set|tail  
  22. _module_not_yet_loaded ()  
  23. {  
  24.     comm -23 <(_module_avail|sort) <(tr : '\n' <<<${LOADEDMODULES}|sort)  
  25. }  
  26. module ()  
  27. {  
  28.     eval `/usr/bin/modulecmd bash $*`  
  29. }  
  30. [root@oldboy ~]# set -o|head  
  31. allexport       off  
  32. braceexpand     on  
  33. emacs           on  
  34. errexit         off  
  35. errtrace        off  
  36. functrace       off  
  37. hashall         on  
  38. histexpand      on  
  39. history         on  
  40. ignoreeof       off 


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

构件中国:面向构件的方法与实践

本书通过丰富的案例研究示例,阐明了构建面向构件软件的最重要因素:概念、技术、规范、管理以及分析与设计过程。 本书的涵盖范围包括:面...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊