找到一个总结的不错的文档关于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变量。
举个例子来讲:
- [oracle@zhou3 ~]$ aaa=bbb --shell变量设定
- [oracle@zhou3 ~]$ echo $aaa
- bbb
- [oracle@zhou3 ~]$ env| grep aaa --设置完当前用户变量并没有
- [oracle@zhou3 ~]$ set| grep aaa --shell变量有
- aaa=bbb
- [oracle@zhou3 ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有
- [oracle@zhou3 ~]$ export aaa --那么用export 导出一下
- [oracle@zhou3 ~]$ env| grep aaa --发现用户变量内存在了
- aaa=bbb
总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量.
二:使用unset命令来清除环境变量,注意set env export设置的变量,都可以用unset来清除的
- 清除环境变量的值用unset命令。如果未指定值,则该变量值将被 设为NULL。示
- 例如下:
- $ export TEST="Test..." #增加一个环境变量TEST
- $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
- TEST=Test...
- $ unset $TEST #删除环境变量TEST
- $ env|grep TEST #此命令没有输出,证明环境变量TEST已经不存在了
三:使用readonly命令设置只读变量
- 使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
- $ export TEST="Test..." #增加一个环境变量TEST
- $ readonly TEST #将环境变量TEST设为只读
- $ unset TEST #会发现此变量不能被删除
- -bash: unset: TEST: cannot unset: readonly variable
- $ TEST="New" #会发现此也变量不能被修改
- -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中的三种主要变量类型:用户自定义变量、环境变量和位置参数变量,以及预定义变量。 1. **用户自定义变量**: 用户自定义变量是我们在Shell会话或脚本中创建的局部变量,它们只在当前的Shell...
"Linux之查看环境变量" ...在上面的讨论中,我们了解了三种查看环境变量的方法:env 命令、export 命令和 set 命令。这些命令可以帮助我们了解 Linux 系统中的环境变量,从而更好地理解和使用 Linux 操作系统。
在ARM架构下,环境变量的设置与其他架构下的Linux系统并无本质区别。但是,由于ARM平台的特性,比如内存限制、性能等因素,在设置环境变量时可能需要注意以下几点: - **优化路径设置**:避免将不必要的目录添加到`...
- 可以直接在命令行中使用 `export` 命令来临时设置环境变量,这种设置仅在当前 shell 会话中有效: ```bash export PATH=$PATH:/path1:/path2:/pathN ``` #### 四、查看已设置的环境变量 1. **使用`echo`命令...
### Linux超级基础系列——Shell变量(本地变量与环境变量) #### 一、Shell与Shell变量简介 在Linux操作系统中,Shell是一种用户与操作系统交互的重要工具,它可以解释用户的命令,并将其传递给内核或其他应用...
* 使用 set 命令显示所有本地定义的 Shell 变量:$ set * 使用 unset 命令来清除环境变量:$ unset TEMP_KEVIN * 使用 readonly 命令设置只读变量:$ readonly TEMP_KEVIN 6. 环境变量的应用 环境变量广泛应用于...
`cross-env`的核心在于它能够创建一个shell命令,该命令在执行时会根据当前的操作系统设置环境变量。它通过解析命令行参数并确保在所有平台上正确地执行`set`(在Windows上)或`export`(在Unix-like系统上)来实现...
查询用户自定义环境变量,可以使用`env`或`set`命令,但`env`仅显示环境变量,而`set`则会展示所有变量,包括非环境变量。若要删除环境变量,使用`unset`命令,如`unset gender`。 接着,我们来看系统自带的环境...
2. **环境变量**:可以在不同的Shell之间传递,并且对所有当前用户所运行的程序都有效。 #### 三、常见的环境变量 以下是一些常见的环境变量及其作用: - **PATH**:存储了命令搜索路径的列表。当执行命令时,系统...
- `set`命令可以用来查看当前Shell会话中的所有变量(包括环境变量和其他内部变量)。例如: ```bash $ set BASH=/bin/bash BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-redhat...
通过上述介绍,我们可以了解到Linux系统中环境变量的重要性以及如何管理和操作这些变量。正确地设置环境变量不仅可以提高系统的安全性,还能让系统运行更加高效。此外,掌握环境变量的基本操作对于日常使用Linux系统...
`set`命令可以展示所有本地定义的Shell变量,而`env`命令则用于显示所有环境变量。 设置环境变量的方法有多种。对于所有用户永久生效的变量,你需要编辑`/etc/profile`文件,比如添加`CLASSPATH`变量: ```bash # ...
`env`命令可以显示当前Shell的所有环境变量,这对于调试和确认环境变量的设置非常有用。例如: ```bash env ``` 输出将列出所有环境变量及其值,如: ``` SSH_AGENT_PID=1875 HOSTNAME=lqm SHELL=/bin/bash TERM=...
- 使用 `set` 命令可以查看所有本地定义的Shell变量。 #### 八、个性化提示符 - 修改 `PS1` 和 `PS2` 变量可以自定义提示符。例如,要将提示符改为 `"Hello,MyNewPrompt:)"`,可以执行 `PS1="Hello,MyNewPrompt:)"`...
- 使用`set`命令可以查看当前shell中的所有环境变量及其值。 ##### 3.2 环境变量的作用 - **PATH**: 指定了shell搜索可执行文件的路径列表。 - **HOME**: 存储了当前用户的主目录路径。 - **MAIL**: 指向用户的邮件...
`env`命令可以用来显示系统中所有当前生效的环境变量,而`set`命令则会列出所有当前Shell中定义的变量,包括本地定义的Shell变量。如果需要移除某个环境变量,可以使用`unset`命令,如`unset TEST`将删除名为`TEST`...
- `env`:显示当前环境的所有环境变量,不同于`set`,它不显示本地变量。 - `source`或`.`: 在当前shell中执行一个脚本,而不是创建一个新的子shell。这样,脚本中设置的环境变量会立即在当前环境中生效,如`source ...
Linux 设置和查看环境变量的方法 ...3. 使用 export 命令设置临时环境变量【对当前 Shell 会话生效】:例如,使用命令 `$ export TEST=Test...`可以设置一个新的环境变量 TEST,该变量仅在当前 Shell 会话中生效。
- `set`命令可以列出为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义的变量。 3. **设置全局环境变量**: - 首先定义一个局部环境变量,然后使用`export`命令将其提升为全局环境变量。 -...
- `set`命令则可以显示所有本地Shell变量,包括环境变量和非环境变量。 3. **删除环境变量**: - 使用`unset`命令可以移除环境变量。例如,`unset TEST`将删除名为TEST的环境变量。 4. **只读环境变量**: - `...