# 08-linux系统中环境变量的设置

# 业务描述

Linux 是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。

# 设置环境变量的方法

# 系统环境变量

这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。作用范围是整个系统。此文件只有 root 用户才能修改。

# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib

添加完成后新的环境变量不会立即生效,需要执行 source /etc/profile. /etc/profile 才会生效,否则只有在下次重新登录此用户时才会生效。

# 指定用户的环境变量

在用户目录下的 .bash_profile 文件中添加变量,该文件是个隐藏文件,需要使用 ll -a 查看:

$ whoami
rethink

$ vi /home/rethink/.bash_profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib

$ source /home/rethink/.bash_profile

其中,.bash_profile 文件只会在用户登录的时候读取。

# 临时有效的环境变量

此类环境变量只对当前的 shell 有效。当我们退出登录或者关闭终端再重新打开时,这些环境变量就会消失。是临时的。

设置方法:命令行下直接使用 export 变量名=变量值 定义变量。

$ export NAME="rethink"
$ echo $NAME
rethink

设置环境变量常用命令

echo 用于打印显示环境变量,如:echo name

export 用于设置新的环境变量,如:export NAME=′rethink′

更新环境变量更新环境变量直接重新赋值即可:NAME='test'(注意:变量名前不需要加)

env 显示当前用户的变量;

set 显示当前 shell 的变量,shell 变量包含用户变量;

unset 删除一个环境变量,如:unset NAME

readonly 设置环境变量只读,如:readonly NAME,只读变量 unset 无效。

# 系统常用环境变量应用分析

# PATH 环境变量

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

路径之间用冒号分隔,这些路径都是一些可以找到可执行程序的目录列表。当我们输入一个指令时,shell 会先检查命令是否是系统内部命令,如果不是则会再去检查此命令是否是一个应用程序,shell 会试着从 PATH 中寻找这些应用程序。

如果 shell 在这些路径目录里没有找到可执行文件,就会报错;若找到,系统将调用执行应用程序。通过设置 PATH ,可以让我们运行程序或指令更加方便。

将某个目录路径加入到PATH中,可以这样写:

$ pwd
/root/docker/httpd
$ export PATH=$PATH:$PWD
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/docker/httpd
# 可以看到在 PATH 后面已经加上了我们当前所处目录的路径

# HOME 环境变量

用户的主工作目录,即为用户登录到Linux系统中时的默认目录。

$ whoami
rethink
$ echo $HOME
/home/rethink

# HISTSIZE 环境变量

保存历史命令的条数。我们输入的指令都会被系统保存下来,这个环境变量记录的就是保持指令的条数。一般为1000。

$ echo $HISTSIZE
1000
$ HISTSIZE=1001
$ echo $HISTSIZE
1001

历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取我们可以通过history命令来查看。可以使用符号 ! 执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。

$ history 5
   59  ls
   60  who
   61  history | head -n 5
   62  who am i
   63  history 5
$ !62
who am i
root     pts/0        2018-04-04 11:00 (101.81.92.18)

# LOGNAME环境变量

当前用户登录名。

$ echo $LOGNAME
rethink
HOSTNAME 主机名称。
$ echo $HOSTNAME
JDu4e00u53f7

# SHELL环境变量

当前用户使用的shell种类。

$ echo $SHELL
/bin/bash

参考资料:

08-linux系统中环境变量的设置 (opens new window)