0%

使用Linux环境变量

使用Linux环境变量

什么是环境变量

bash shell使用一种称为环境变量的特性来存储关于shell会话和工作环境的信息(环境变量的名称由此而来)。该特性还允许你将数据存储在内存中,以便于在shell中运行的程序和脚本访问它们。这是一种便捷的、用于存储持久性数据的方式,这些数据可以标示用户账户、系统、shell或任何需要存储的内容的特性。

bash shell中共有两种类型的环境变量:

  • 全局变量;
  • 本地变量;

全局环境变量

要查看全局变量,可以使用printenv命令。

通过该命令的输出,我们可以看到bash shell已经设置了许多全局环境变量,其中大多数由系统在登录过程中设置。

本地环境变量

本地环境变量只在定义它们的本地进程中可见。可以通过set命令显示特定进程的所有环境变量集。这其中包含了全局环境变量和本地环境变量。

设置环境变量

设置本地环境变量

为环境变量分配一个数值或者字符串,方法是使用等号将变量指定为具体值。

例如

1
$ test=hello,

那么我们使用

1
$ echo $test

就可以输出hello。

当然如果赋值为一个字符串,需要用单引号括起来,否则空格后的字符会被认为是命令而出错。

如果创建新环境变量,建议(但不要求)使用小写字母。这用助于区分个人环境变量与系统环境变量。

设置全局环境变量

创建全局变量的方法是创建一个本地环境变量,然后使用export将它导出到全局环境中。

移除环境变量

可以使用unset命令来移除环境变量,在unset命令中引用环境变量时,不要使用美元符号。

默认的shell环境变量

  1. BASH :记录当前bash shell的路径。
1
2
[root@localhost awK]# echo $BASH
/bin/bash
  1. BASH_SUBSHELL :记录当前子shell的层次。BASH_SUBSHELL是从0开始计数的整数。
  2. BASH_VERSINFO :是一个数组包含六个元素,这六个元素显示bash的版本信息。
  3. BASH_VERSION :显示shell版本的信息。
  4. DIRSTACK :记录了栈顶的目录值,初值为空。
  5. GLOBLGNORE :是由冒号分割的模式列表,表示通配时忽略的文件名集合。
  6. GROUPS :记录当前用户所属的组。
  7. HOME :记录当前用户的家目录,由/etc/passwd的倒数第二个域决定。
  8. HOSTNAME :记录主机名。
  9. HOSTTYPE和MACHTYPE :都是记录系统的硬件架构。
  10. IFS :用于设置指定shell域分隔符,默认情况下为空格。
1
2
3
[root@localhost awK]# export IFS=:
[root@localhost awK]# echo $PATH
/usr/local/sbin /usr/local/bin /sbin /bin/usr/sbin /usr/bin /root/bin
  1. OLDPWD :记录旧的工作目录。
  2. OSTYPE :记录操作系统类型。
  3. PATH :环境变量,显示当前PATH环境变量的内容。
  4. PPID :是创建当前进程的进程号,即当前进程的父进程号
  5. PS1 :提示符变量,用于设置提示符格式,用于设置一级shell提示符环境变量。
  6. PS2 :用于设置二级shell提示符环境变量。
  7. PWD :记录当前路径
  8. REPLY :REPLY变量与read和select有关。
  9. SECONDS:记录脚本从开始到结束耗费的时间。
  10. SHELL :显示当前所用的shell
  11. SHELLOPTS :记录了处于“开”状态的shell选项列表,它只是一个只读变量。
  12. SHLVL :记录了bash嵌套的层次,一般来说,我们启动第一个Shell时。 $SHLVL=1。如果在这个Shell中执行脚本,脚本中的$SHLVL=2 。
  13. TMOUT :用来设置脚本过期的时间,比如TMOUT=3,表示该脚本3秒后过期。
  14. UID : 已登用户的ID
  15. USER :显示当前用户名字

注意:使用set命令时,并非所有的默认环境变量都会显示出来,因为有些默认的环境变量时不需要赋值的。

设置PATH环境变量

增加环境变量的方法为export PATH=$PTAH:/the/path/you/want/to/add;

有时我们可以使用PATH=$PATH:. 临时让当前目录添加到PATH变量中,可以执行当前目录的程序而不用添加./。 ,不错哟。

定位系统环境变量

Bash shell将查找下面的文件用来处理登录shell的设置:

  • /etc/profile : 是系统上的主默认启动文件,系统上的每一个用户在登录时都将执行此启动文件,比如安装了什么软件,需要每个人都使用,那么需要将环境变量设置在该文件。
  • $HOME/.bash_profile
  • $HOME/.bash_login
  • $HOME/.profile 上面的3个启动文件主要特定于各个用户,这应该叫井水不犯河水。
  • $HOME/.bashrc 该文件为交互式shell启动时处理的。

变量数组

可以使用

1
$ mytest=(one two three four five)

为某个环境变量设置多个值,但是在显示的时候,如果使用

1
$echo $mytest

那么只会出现one,而是用$echo ${mytest[1]},则显示two,可以使用 $echo ${mytest[*]}显示所有的值。

使用命令别名

命名别名允许您为公共命令以及它们的参数创建别名,以尽可能减少录入工作。

因为我们知道,在启动新的交互式的shell时,bash shell始终会读取.bashrc启动文件,所以我们可以把别名放在该文件中。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道