热门标签 | 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)。


推荐阅读
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文探讨了如何在发布 XenApp 应用时,通过命令行参数实现启动时的参数传递。特别介绍了静态和动态参数传递的方法,并详细解释了 ICA 文件中两种参数传递方式的区别及安全检查机制。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
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社区 版权所有