原文连接:http://www.linuxidc.com/Linux/2011-08/40478.htm

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

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

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

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

举个例子来讲:

  1. [www.linuxidc.com@linuxidc ~]$ aaa=bbb --shell变量设定
  2. [www.linuxidc.com@linuxidc ~]$ echo $aaa
  3. bbb
  4. [www.linuxidc.com@linuxidc ~]$ env| grep aaa --设置完当前用户变量并没有
  5. [www.linuxidc.com@linuxidc ~]$ set| grep aaa  --shell变量有
  6. aaa=bbb
  7. [www.linuxidc.com@linuxidc ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有
  8. [www.linuxidc.com@linuxidc ~]$ export aaa   --那么用export 导出一下
  9. [www.linuxidc.com@linuxidc ~]$ env| grep aaa  --发现用户变量内存在了
  10. aaa=bbb

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

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

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

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

Shell环境变量以及set,env,export的区别相关推荐

  1. shell变量/环境变量和set/env/export用法_转

    转自:shell环境变量以及set,env,export的区别 一.shell环境变量的分类以及set env export的区别: set:显示(设置)shell变量,包括的私有变量以及用户变量.不 ...

  2. linux crontab环境变量,Linux下crontab内环境变量与Shell环境变量的关系【转】

    crontab,总是不会缺省的从用户profile文件中读取环境变量参数 经常导致在手工执行某个脚本时是成功的,但是到crontab中试图执行时就会报错. 解决办法如下: 方法一:在shell文件中获 ...

  3. linux系统默认的环境变量path,Linux编程 12 (默认shell环境变量, PATH变量重要讲解)...

    一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境.这些默认环境变量可以理解是上篇所讲的系统全局环境变量. 1.1 bash  shell支持的Bourne变量 Bo ...

  4. 环境变量setenv函数和export命令的解释

    一.环境变量 1.概念 指在操作系统中用来指定操作系统运行环境的一些参数.环境变量通常具有特殊用途,在系统中具有全局特性. 环境变量通常具有全局属性,可以被子进程继承下去. 2.常见的环境变量 (1) ...

  5. Linux中环境变量的设置——setenv/export

    Linux中环境变量的设置--setenv/export 环境变量 境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统 ...

  6. 在Linux里设置环境变量的方法(export PATH)

    在Linux里设置环境变量的方法(export PATH) 在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量 ...

  7. 在Linux里设置环境变量的方法(export PATH)--待修改

    2019独角兽企业重金招聘Python工程师标准>>> 又可参见:http://bbs.csdn.net/topics/80391559 在Linux里设置环境变量的方法(expor ...

  8. Linux系统 熟练掌握 shell环境变量

     熟练掌握 shell环境变量      shell就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用.      shell支持具有字符串值的变量.shel ...

  9. Shell环境变量深入了解

    目录 Shell环境变量深入:加载流程测试 Shell登录环境执行脚本文件语法 Shell非登录环境变量执行脚本文件语法 Shell环境变量深入:识别Shell环境类型 Shell环境变量深入:详细切 ...

最新文章

  1. nodejs是用来做什么的?
  2. Spring-AOP @AspectJ切点函数之@annotation()
  3. php socket 用户名密码,PHP用socket模拟post之fsocketopen
  4. Vim 上手指南【基础、中级】
  5. el表达式大小写问题的坑坑坑坑坑坑坑坑!!!
  6. 云服务器与传统服务器的优势差异
  7. NC51189 Mondriaan‘s Dream
  8. php describe,php – 在Zend框架中的许多DESCRIBE查询
  9. 【BZOJ1048】分割矩阵(记忆化搜索,动态规划)
  10. 举例说明在汇编语言中,[]的用法
  11. oninput,onpropertychange,onchange的使用方法和差别
  12. UE4笔记-UStructToJsonObjectString首字母自动转换为小写的问题及解决方法
  13. java修改request的paramMap
  14. 网络安全之渗透实战学习
  15. Exynos4412——LCD驱动
  16. 学习笔记1:异地容灾和负载均衡
  17. python对缩进太敏感...a_a
  18. 计算机网络之构造超网(无分类编址)
  19. Redis的maven依赖
  20. egret--龙骨动画的导入和使用

热门文章

  1. 卷积滤波 英文_《信号与系统》专业术语中英文对照表
  2. Mybatis执行过程源码分析
  3. 数据结构实验之链表五:单链表的拆分
  4. Vue.js 组件基础
  5. 10 个常见的 Linux 终端仿真器
  6. 在ThoughtWorks工作两个多月的总结
  7. mysql dba系统学习(16)mysql的mysqldump备份
  8. 一图秒懂P2P、P2C 、O2O 、B2C、B2B、C2C
  9. Visio画大括号、花括号
  10. Java算法-奇怪的分式