热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux环境变量加载与管理

环境变量是用于描述系统运行环境的一系列变量,如PATH指定了命令的搜索路径,SHELL指定了默认的Shell。本文介绍了如何加载和管理这些环境变量,以及普通变量与环境变量的区别。

环境变量简介

环境变量是操作系统中用于描述系统运行环境的一系列变量。常见的环境变量包括:

  • PATH:指定命令的搜索路径。
  • SHELL:指定默认的Shell。
  • HOME:指定用户的主目录。

加载环境变量

当一个Shell启动时,会从特定的配置文件中读取并加载环境变量。例如,Bash Shell 会从~/.bashrc 文件中读取环境变量。

普通变量与环境变量

在Shell中,变量可以分为普通变量和环境变量。普通变量仅在当前Shell进程中有效,而环境变量不仅在当前Shell进程中有效,还会传递给其子进程。

定义普通变量

在Bash中定义一个普通变量:

$ newvar=8
$ echo $newvar
8

使用env命令查看环境变量,发现自定义的变量并不在其中,说明普通变量和环境变量是不同的。

环境变量的特性

环境变量可以通过set和unset命令进行创建和删除。例如,尝试删除HOME环境变量:

$ echo $HOME
/home/user
$ unset HOME
$ echo $HOME

虽然在当前Shell中删除了HOME,但新开一个Shell时,HOME又会恢复,因为环境变量是在Shell启动时从配置文件中加载的。

环境变量的传递

环境变量属于当前Shell及其子进程。例如,在~/.bashrc文件中添加一个变量myvar=9,Bash启动时myvar会被加载为环境变量,并在子Shell中可见。

普通变量的局限性

普通变量仅在当前Shell进程中有效,不会传递给子Shell。如果希望普通变量在子Shell中也有效,需要将其转换为环境变量。

相关命令

env命令用于显示和管理环境变量:

  • env:显示当前环境变量。
  • env -i NAME=value COMMAND:不带环境变量启动命令。
  • env -u NAME COMMAND:从环境变量中删除一个变量,然后运行命令。

示例代码

user@myzone ~> env // 显示全部环境变量,内容较多,略去
user@myzone ~> set a=5
user@myzone ~> echo $a
5
user@myzone ~> env -i PATH=mypath echo.sh
mypath
user@myzone ~> export a // 将a设置为环境变量
user@myzone ~> fish // 子Shell进程
user@myzone ~> echo $a
5
user@myzone ~> env -u a fish // 子Shell进程中再次打开一个Shell
user@myzone ~> echo $a
user@myzone ~> exit
user@myzone ~> exit

echo.sh是一个简单的脚本,功能是显示PATH的值:

#!/bin/sh
echo $PATH

可以看到,运行echo.sh时,PATH已被env命令修改。

export命令

export命令用于将普通变量转换为环境变量。转换后的变量不仅在当前Shell中有效,还会传递给其子进程。

user@myzone ~> set val=3
user@myzone ~> export val // 转换为环境变量
user@myzone ~> fish // 子Shell进程
user@myzone ~> echo $val
3

由于export将val转换为环境变量,子Shell中也有这个val,而配置文件中没有val,因此子Shell中的val是从调用它的Shell中继承的。

其他命令

set、unset和echo命令用于变量的管理和显示:

  • set:显示所有变量。
  • unset:删除变量。
  • echo:显示变量的值。

需要注意的是,不同的Shell命令可能有所不同,具体使用方法请参考相应Shell的手册页(man page)。


推荐阅读
author-avatar
反反复复-念念不忘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有