运维:Linux 的环境变量知识总结
来源:IT技术分享社区发布时间:2022-11-22987浏览
询问 AILinux 是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义, 这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。
- 对所有用户生效的永久性变量
这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。作用范围是整个系统。此文件只在 root 下才能修改。
#vi/etc/profile
exportCLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
添加完成后新的环境变量不会立即生效,立即生效需要运行 source /etc/profile ,否则只能在下次重进此用户时才能生效。
- 对单一用户生效的永久性变量

$whoami
rethink
$vi/home/rethink/.bash_profile
exportCLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
$source/home/rethink/.bash_profile
在上图中用红框框住了两个文件:.bashrc 和. bash_profile ,原则上讲设置此类环境变量时在这两个文件任意一个里面添加都是可以的,这两个文件的区别为:.bash_profile 是交互式 login 方式进入 bash shell 运行,.bashrc 是交互式 non-login 方式进入 bash shell 运行。可以理解为. bash_profile 文件只会在用户登录的时候读取一次,而. bashrc 在每次打开终端进行一次新的会话时都会读取。临时有效的环境变量 (只针对当前 shell 有效)
此类环境变量只对当前的 shell 有效。当我们退出登录或者关闭终端再重新打开时,这个环境变量就会消失。是临时的。设置方法:命令行下直接使用 [export 变量名 = 变量值] 定义变量。
$export设置环境变量常用命令
$echo$NAME
rethink
- echo 用于打印显示环境变量,如:echo $NAME;
- export 用于设置新的环境变量,如:export NAME='rethink';
- 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
$exportPATH=$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。
$history5
59ls
60who
61history|head-n5
62whoami
63history5
$!62
whoami
rootpts/02018-04-0411:00(101.81.92.18)
- LOGNAME
$echo$LOGNAME
rethink
- HOSTNAME 主机名称。
$echo$HOSTNAME
JDu4e00u53f7
- SHELL
$echo$SHELL
/bin/bash

新闻来源:IT技术分享社区,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。

