Linux Shell 环境变量

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

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

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

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 设定 shell 变量 name,值为 Ronaldo
$ name=Ronaldo
# 打印变量
$ echo $name
Ronaldo
# 当前用户变量不存在
$ env | grep name
# shell 变量存在
$ set | grep name
name=Ronaldo
# 不是 export 命令导出的变量
$ export| grep name
# 使用 export 命令导出
$ export name
# 导出后,用户变量中可以看到
$ env | grep name
name=Ronaldo

使用 unset 清除环境变量

set,env,export 设置的变量都可以用 unset 清除

1
2
3
4
# 清除变量
$ unset name
# 可以看到变量没了
$ env | grep name

变量配置文件

1
2
3
4
5
6
# 用户登录时被读取,其中包含的命令被执行
~/.bash_profile
# 启动新的shell时被读取,并执行
~/.bashrc
# shell 登录退出时被读取
~/.bash_logout

常见变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)
PATH
# 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录
ROOTPATH
# 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件
LDPATH
# 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面
MANPATH
# 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面
INFODIR
# 这个变量包含了浏览文件内容的程序的路径(例如less或者more)
PAGER
# 这个变量包含了修改文件内容的程序(文件编辑器)的路径(比如nano或者vi)
EDITOR
# 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料
KDEDIRS
# 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来
CONFIG_PROTECT
# 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来
CONFIG_PROTECT_MASK

# 当前用户主目录
HOME
# 是指当前用户的邮件存放目录
MAIL
# 是指当前用户用的是哪种Shell
SHELL
# 是指保存历史命令记录的条数
HISTSIZE
# 是指当前用户的登录名
LOGNAME
# 是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的
HOSTNAME
0%