`

(转)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变量。

 

举个例子来讲:

 

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

  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基础之环境变量 位置参数变量 预定义变量

    本文将深入探讨Shell中的三种主要变量类型:用户自定义变量、环境变量和位置参数变量,以及预定义变量。 1. **用户自定义变量**: 用户自定义变量是我们在Shell会话或脚本中创建的局部变量,它们只在当前的Shell...

    Linux之查看环境变量.docx

    "Linux之查看环境变量" ...在上面的讨论中,我们了解了三种查看环境变量的方法:env 命令、export 命令和 set 命令。这些命令可以帮助我们了解 Linux 系统中的环境变量,从而更好地理解和使用 Linux 操作系统。

    arm环境变量的设置

    在ARM架构下,环境变量的设置与其他架构下的Linux系统并无本质区别。但是,由于ARM平台的特性,比如内存限制、性能等因素,在设置环境变量时可能需要注意以下几点: - **优化路径设置**:避免将不必要的目录添加到`...

    Linux 环境变量设置

    - 可以直接在命令行中使用 `export` 命令来临时设置环境变量,这种设置仅在当前 shell 会话中有效: ```bash export PATH=$PATH:/path1:/path2:/pathN ``` #### 四、查看已设置的环境变量 1. **使用`echo`命令...

    linux超级基础系列-shell变量(本地变量和环境变量)

    ### Linux超级基础系列——Shell变量(本地变量与环境变量) #### 一、Shell与Shell变量简介 在Linux操作系统中,Shell是一种用户与操作系统交互的重要工具,它可以解释用户的命令,并将其传递给内核或其他应用...

    Linux下如何设置环境变量.docx

    * 使用 set 命令显示所有本地定义的 Shell 变量:$ set * 使用 unset 命令来清除环境变量:$ unset TEMP_KEVIN * 使用 readonly 命令设置只读变量:$ readonly TEMP_KEVIN 6. 环境变量的应用 环境变量广泛应用于...

    cross-env-设置环境变量跨平台

    `cross-env`的核心在于它能够创建一个shell命令,该命令在执行时会根据当前的操作系统设置环境变量。它通过解析命令行参数并确保在所有平台上正确地执行`set`(在Windows上)或`export`(在Unix-like系统上)来实现...

    『忘了再学』Shell基础 — 13、环境变量(一).doc

    查询用户自定义环境变量,可以使用`env`或`set`命令,但`env`仅显示环境变量,而`set`则会展示所有变量,包括非环境变量。若要删除环境变量,使用`unset`命令,如`unset gender`。 接着,我们来看系统自带的环境...

    定制Linux系统环境变量 .pdf

    2. **环境变量**:可以在不同的Shell之间传递,并且对所有当前用户所运行的程序都有效。 #### 三、常见的环境变量 以下是一些常见的环境变量及其作用: - **PATH**:存储了命令搜索路径的列表。当执行命令时,系统...

    linux 系统管理篇--环境变量

    - `set`命令可以用来查看当前Shell会话中的所有变量(包括环境变量和其他内部变量)。例如: ```bash $ set BASH=/bin/bash BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-redhat...

    Linux环境变量命令说明

    通过上述介绍,我们可以了解到Linux系统中环境变量的重要性以及如何管理和操作这些变量。正确地设置环境变量不仅可以提高系统的安全性,还能让系统运行更加高效。此外,掌握环境变量的基本操作对于日常使用Linux系统...

    Linux 环境变量

    `set`命令可以展示所有本地定义的Shell变量,而`env`命令则用于显示所有环境变量。 设置环境变量的方法有多种。对于所有用户永久生效的变量,你需要编辑`/etc/profile`文件,比如添加`CLASSPATH`变量: ```bash # ...

    Linux环境变量设置

    `env`命令可以显示当前Shell的所有环境变量,这对于调试和确认环境变量的设置非常有用。例如: ```bash env ``` 输出将列出所有环境变量及其值,如: ``` SSH_AGENT_PID=1875 HOSTNAME=lqm SHELL=/bin/bash TERM=...

    linux 环境变量 配置 实用技巧 配置Linux 操作系统 环境变量

    - 使用 `set` 命令可以查看所有本地定义的Shell变量。 #### 八、个性化提示符 - 修改 `PS1` 和 `PS2` 变量可以自定义提示符。例如,要将提示符改为 `"Hello,MyNewPrompt:)"`,可以执行 `PS1="Hello,MyNewPrompt:)"`...

    arm开发板上设置环境变量

    - 使用`set`命令可以查看当前shell中的所有环境变量及其值。 ##### 3.2 环境变量的作用 - **PATH**: 指定了shell搜索可执行文件的路径列表。 - **HOME**: 存储了当前用户的主目录路径。 - **MAIL**: 指向用户的邮件...

    Linux 环境变量 设置总结

    `env`命令可以用来显示系统中所有当前生效的环境变量,而`set`命令则会列出所有当前Shell中定义的变量,包括本地定义的Shell变量。如果需要移除某个环境变量,可以使用`unset`命令,如`unset TEST`将删除名为`TEST`...

    Linux环境变量.docx

    - `env`:显示当前环境的所有环境变量,不同于`set`,它不显示本地变量。 - `source`或`.`: 在当前shell中执行一个脚本,而不是创建一个新的子shell。这样,脚本中设置的环境变量会立即在当前环境中生效,如`source ...

    Linux设置和查看环境变量的方法.docx

    Linux 设置和查看环境变量的方法 ...3. 使用 export 命令设置临时环境变量【对当前 Shell 会话生效】:例如,使用命令 `$ export TEST=Test...`可以设置一个新的环境变量 TEST,该变量仅在当前 Shell 会话中生效。

    Linux环境变量相关内容

    - `set`命令可以列出为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义的变量。 3. **设置全局环境变量**: - 首先定义一个局部环境变量,然后使用`export`命令将其提升为全局环境变量。 -...

    linux的环境变量

    - `set`命令则可以显示所有本地Shell变量,包括环境变量和非环境变量。 3. **删除环境变量**: - 使用`unset`命令可以移除环境变量。例如,`unset TEST`将删除名为TEST的环境变量。 4. **只读环境变量**: - `...

Global site tag (gtag.js) - Google Analytics