Linux系列之管理用户环境变量
前言
环境变量控制你在Linux工作环境中的外观、行为和感觉。一共有两种类型的变量:
- 环境变量:这些是内置于系统中的进程范围的变量,控制着系统的外观和行为。因为是进程范围的,所以它们被任何子
shell
或进程所继承。 - shell变量:通常以小写字母列出,并且只在它们被设置的
shell
中有效。
查看和修改环境变量
使用env
命令来查看所有的默认环境变量:
环境变量总是大写的,正如我们所看到的SHELL
,WINDOWID
以及 COLORTERM
。
为了查看所有的环境变量,包括shell
变量、本地变量,以及shell
函数:比如说任何用户定义的变量和命令别名,我们可以使用set
命令。我会把它和more
一起使用,这样它看起来更容易管理
set | more
改变变量值
我们可以通过提供变量名来更改变量,后面跟着相等符号以及新值:
HISTSIZE=200
我们改变了变量HISTSIZE
的值,但只在我们特定的环境中生效。如果我们想将此更改持久化,我们可以使用export
命令。export
将会把你当前的环境中的新值,设置到任何新fork
的子进程中,允许新进程继承导出的变量。
export HISTSIZE
注意:进行任何更改之前,你也许想要保存一份当前值的副本echo $VARIABLE> ~/valueOfVARIABLE.txt
,或者你甚至可能想保留一份所有当前变量值副本set> ~/valueofALLon02252020.txt
。
你可能需要修改的另一个变量是PS1
变量。它有一组占位符,用于显示你想在shell
提示符中显示的信息:
\u
当前用户的名字\h
主机名\w
当前工作目录的基本名称
PATH变量
PATH变量控制shell
在系统中的何处查找命令。如果bash shell
在你的PATH变量中的某个目录中没有找到该命令,将会返回command not found
错误。
让我们来看看哪个目录存储着环境变量:
echo $PATH
这是我的终端来搜寻任意命令的所有目录。每个目录通过冒号(:)进行分隔。
假如说我有某些命令存在于/home/azureuser/gpstools
目录下,我想将该目录添加到PATH中。我们可以通过输入以下内容将一个目录添加到PATH变量中:
PATH=$PATH:/directory/to/add
这将会在原来的PATH基础上,加上/directory/to/add/
目录。
请注意:不要执行PATH=/directory/to/add
,那会替换所有原有的目录并添加新的目录,你想要的是追加,而不是替换。
创建用户自定义变量
我们可以通过以下语法来创建属于我们自己的变量:
MYVARIABLE="VALUE"
如果你需要让它持久化,别忘了导出它:export MYVARIABLE
。如果你想删除任何变量,使用unset
命令:unset MYVARIABLE
,该命令只是在删除任何东西之前进行仔细检查。