Linux变量的认识及环境变量配置详解
文章目录
- 1、变量的划分
- 2、局部变量
- 3、全局变量
- 4、环境变量
- 4.1、概述
- 4.2、配置临时环境变量
- 4.3、配置永久环境变量
- 4.3.1、用户级配置文件
- 1)配置方法一:~/.bashrc文件
- 2)配置方法二:~/.profile文件
- 3)配置方法三:~/.bash_profile文件
- 4.3.2、系统级配置文件
- 1)配置方法一:/etc/environment文件
- 2)配置方法二:/etc/profile文件
- 3)配置方法三:/etc/bashrc文件
- 4.3.3、/etc/profile.d/配置路径
- 4.3、查看环境变量
- 5、内置变量
- 6、参考
1、变量的划分
在Linux中,变量的划分有很多种,其中根据变量的作用范围(作用域)进行划分的有四类,分别是局部变量、全局变量、环境变量、内置变量。下面来具体讨论,本文以环境变量的讨论为主,其他变量简要说明。
2、局部变量
局部变量,使用local关键字定义的变量,通常在定义它的脚本或命令中可见,但仅在定义的函数中可使用,脚本或命令中的其他函数不可使用,除非被明确传递,在其子脚本或子进程中也不可用。通常在函数中使用关键字local来定义,示例:
function myFunction() {local localVar="a local var"
}
3、全局变量
全局变量,未使用 local 关键字的变量都是全局变量,在定义的脚本及命令中可见,一般在函数外定义,在整个脚本及命令中全局可使用。但在不使用export导出的情况下,无法在子脚本中可见,即切换进程后无法使用:
- 定义全局变量,示例:
GlobalVar1="A global VAR1"
# 切换用户查看
su other_user
echo $GlobalVar1

切换进程后,无法查看到对应的全局变量,因为没通过export将其导出,无法正常的访问。
- 定义全局变量,并将其
export导出,示例:
export GlobalVar2="A global VAR2"
# 切换用户查看
su other_user
echo $GlobalVar2

切换进程后,能够正常的访问到相应的全局变量,其通过export导出,使其在子脚本或命令中可见,因此能够正常访问到。
注意: 全局变量一般定义为小写字母,当定义为大写字母时,默认其为全局配置,即环境变量,这是一个通用的约定,避免变量的调用冲突。
4、环境变量
4.1、概述
环境变量是在Linux操作系统中用来指定操作系统运行环境的一些参数的一种机制。它们是动态命名的值,通常名称用大写字母进行定义,由操作系统或用户设置。通常情况下会存放重要的配置信息,如配置文件路径、用户信息、网络设置参数等。常见的环境变量有 PATH, HOME, USER 等,下面来详细讨论环境变量的不同配置方法及其作用域。
4.2、配置临时环境变量
使用 export 命令来设置临时环境变量,示例:
export TEST="$TEST:/usr/local/bin"
执行完后通过echo $PATH查看,仅在当前窗口生效,关闭窗口或新建其他窗口,无法查看到之前设置的临时环境变量:

作用范围: 仅当前用户,当前窗口。
注意: 与全局变量中使用export导出变量效果类似,差别在于大小写。
4.3、配置永久环境变量
4.3.1、用户级配置文件
用户级配置文件,作用范围仅为单个用户的账户,只有当该用户登录shell或启用新的shell面板时,配置内容才会生效。提供给不同用户可以灵活配置各自的工作环境,下面是具体的用户配置方法:
1)配置方法一:~/.bashrc文件
vim ~/.bashrc
# 内容末行添加环境变量内容:完成后wq保存并关闭文件
export TEST="$TEST:/usr/local/bin"
适用于当前登录用户,用于非登录 shell,即在用户登录后启动的shell中生效或新的终端窗口或新的shell脚本。
生效方法: 使用source ~/.bashrc生效配置,并重新打开新的终端,即刻生效。
用户范围: 当前用户,新建窗口&刷新变量后的窗口。
2)配置方法二:~/.profile文件
vim ~/.profile
# 内容末行添加环境变量内容:完成后wq保存并关闭文件
export TEST="$TEST:/usr/local/bin"
适用于当前登录用户,登录型shell,即登录过程中进行配置生效。
生效方法: 使用source ~/.profile生效配置,并重新打开新的终端,即刻生效。
用户范围: 当前用户,新建窗口&刷新变量后的窗口。
3)配置方法三:~/.bash_profile文件
vim ~/.bash_profile
# 内容末行添加环境变量内容:完成后wq保存并关闭文件
export TEST="$TEST:/usr/local/bin"
适用于当前登录用户,登录型shell,即登录过程中进行配置生效。与~/.profile作用范围相同,但生效的优先级高于~/.profile文件
生效方法: 使用source ~/.profile生效配置,并重新打开新的终端,即刻生效。
用户范围: 当前用户,新建窗口&刷新变量后的窗口。
4.3.2、系统级配置文件
系统级配置文件,影响范围为整个系统,所有的用户账户,无论是哪一位用户登录均可使用当前配置的系统环境变量内容,作用在提供一套标准的用户环境,保持系统环境一致性。同时系统级配置存在权限控制,仅有管理员可以进行配置,加强了环境管理。下面是不同的系统级配置的方法:
1)配置方法一:/etc/environment文件
vim /etc/environment
# 内容末行添加环境变量内容:完成后wq保存并关闭文件
TEST="$TEST:/usr/local/bin"
这是一个简单的键值对文件,用于设置系统级环境变量。这里设置的变量对所有用户有效。这里由于使用键值对存储,无需使用export关键字。
生效方法: 系统重启,或用户注销重新登录
用户范围: 系统所有用户
2)配置方法二:/etc/profile文件
vim /etc/profile
# 内容末行添加环境变量内容:完成后wq保存并关闭文件
export TEST="$TEST:/usr/local/bin"
这是全系统的登录脚本,当任何用户登录时运行,登录过程中进行配置生效。
生效方法: 系统重启,或用户注销重新登录
用户范围: 系统所有用户
3)配置方法三:/etc/bashrc文件
vim /etc/bashrc
# 内容末行添加环境变量内容:完成后wq保存并关闭文件
export TEST="$TEST:/usr/local/bin"
适用于所有用户的 Bash 配置,用于非登录 shell,即在用户登录后启动的shell中生效或新的终端窗口或新的shell脚本。
生效方法: 系统重启,或用户注销重新登录。针对当前窗口可以使用source /etc/bashrc来生效配置。
用户范围: 系统所有用户
4.3.3、/etc/profile.d/配置路径
在Centos 7.9中,有/etc/profile.d/路径用来存放自定义脚本,这些脚本会在登录时自动运行,可以通过该机制,创建shell脚本来配置环境变量,如setenv.sh:
#!/bin/bash
export TEST="$TEST:/usr/local/bin"
之后,赋予该脚本执行权限,即可在每次登录时,使用特定的环境变量:
chmod +x /etc/profile.d/setenv.sh
由于是在系统级路径下进行配置,其实整个过程,也相当于是系统级的一个环境变量配置。这个路径下的脚本,所有用户登录都会执行。
生效方法: 系统重启,或用户注销重新登录
用户范围: 系统所有用户
4.3、查看环境变量
- 1、
printenv命令
可以打印部分或全部环境变量:
# 打印全部环境变量
printenv
# 打印PATH环境变量
printenv PATH
- 2、
env命令
env 命令类似于 printenv,但通常用于在修改后的环境中运行程序,不带参数时与printenv等价。
# 打印全部环境变量
env
# 在新环境变量中运行程序
env test.sh
- 3、
echo命令
使用 echo 命令可以显示一个特定环境变量的值,可用于快速检查一个变量的修改是否生效:
echo $PATH
- 4、
set命令
set 命令可以显示局部和环境变量以及 shell 函数,其打印的信息比printenv更多,但不推荐使用,因为其包含的内容不只是环境变量,结果会更杂乱。
5、内置变量
由 shell (比如 Bash Shell)本身预定义的变量称之为内置变量,非用户自定义。这些内置变量提供了关于系统环境和 shell 自身运行状态的重要信息,用户无法创建新的内置变量。一般情况下不允许用户修改内置变量,仅可读取,常见的内置变量有下面这些:
| 内置变量 | 描述 |
|---|---|
HOME | 当前用户的主目录路径。 |
PWD | 当前工作目录的路径。 |
USER | 当前登录的用户名。 |
BASH_VERSION | 当前运行的 Bash 版本信息。 |
PATH | 系统查找命令的目录列表。 |
RANDOM | 每次引用时生成的随机整数。 |
UID | 当前用户的用户ID。 |
使用内置变量示例:
echo "Your home directory is $HOME"
echo "You are logged in as $USER"
6、参考
https://juejin.cn/post/6844904173775880199
https://zhuanlan.zhihu.com/p/566600783
相关文章:
Linux变量的认识及环境变量配置详解
文章目录 1、变量的划分2、局部变量3、全局变量4、环境变量4.1、概述4.2、配置临时环境变量4.3、配置永久环境变量4.3.1、用户级配置文件1)配置方法一:~/.bashrc文件2)配置方法二:~/.profile文件3)配置方法三ÿ…...
【excel】数据非数值导致排序失效
场景 存在待排序列的数值列,但排序失效,提示类型有问题: 解决 选中该列,数据→分列 而后发现提示消失,识别为数字,可正常排序。...
软件网关--Nginx
Nginx 的多功能用途 Nginx 是构建现代化分布式应用程序的重要工具,它的功能远不止于高性能的 Web 服务器和反向代理。它还能充当 API 网关,处理前后端通信、认证、授权、监控等任务。以下是 Nginx 的主要用途: 前后端通信代理:N…...
sourceTree push失败
新电脑选择commit and push,报错了,不过commit成功,只不过push失败了。 原因是这个,PuTTYs cache and carry on connecting. 这里的ssh选择的是 PuTTY/Plink,本地没有这个ssh密钥,改换成openSSHÿ…...
leetCode33. 搜索旋转排序数组
leetCode33. 搜索旋转排序数组 题目思路 此题的特点是:排好序循环的数组:特点:可以分为两个区间,一半升序,一半降序,或者全部升序 我们可以用二分法,找出升序 到降序的那个临界值,并…...
JS_监听dom变化触发,new MutationObserver
MutationObserver 是一个用于监测 DOM 变化的接口,它提供了一种机制来异步观察在特定元素或文档中发生的 DOM 变化。 MutationObserver 的作用包括: 1.监测 DOM 变化:你可以创建一个 MutationObserver 实例,并指定一个回调函数。…...
什么是驱动数字签名?如何获取驱动数字签名?
Windows 驱动程序承载着计算机实现的各种内核和用户模式功能。如果驱动程序被黑客攻击,可能会产生很多问题。Windows通过数字签名来验证驱动程序包的完整性及发布者的身份。2020年10月的安全更新中,微软加强了对驱动软件的验证,如果Windows无…...
【leetcode】优先队列题目总结
优先队列的底层是最大堆或最小堆 priority_queue<Type, Container, Functional>; Type是要存放的数据类型Container是实现底层堆的容器,必须是数组实现的容器,如vector、dequeFunctional是比较方式/比较函数/优先级 priority_queue<Type>…...
typescript 中的泛型
泛型:解决 类、接口、方法的复用性、以及对不特定数据类型的支持 传入的参数与返回参数类型一致 泛型函数 // T表示泛型,具体什么类型是调用这个方法的时候决定的 function getData<T>(value: T): T {return value } getData<number>(123) …...
计算方法实验2(补充):列主元消元法解线性方程组
C源代码 #include<bits/stdc.h> using namespace std;// 列主元消去法求解线性方程组 vector<long double> Column_Elimination(vector<vector<long double>> A, vector<long double> b);int main() {vector<vector<long double>> …...
Qt扫盲-Qt D-Bus概述
Qt D-Bus概述 一、概述二、总线三、相关概念1. 消息2. 服务名称3. 对象的路径4. 接口5. 备忘单 四、调试五、使用Qt D-Bus 适配器1. 在 D-Bus 适配器中声明槽函数1. 异步槽2. 只输入槽3. 输入输出槽4. 自动回复5. 延迟回复 一、概述 D-Bus是一种进程间通信(IPC)和远程过程调用…...
懒洋洋作业讲解
懒洋洋作业讲解 环境配置 1.软件下载:DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架 2.软件介绍 HBuilder是由DCloud(数字天堂)推出的一款面向HTML5的Web开发…...
vue3 + ts实现canvas绘制的waterfall
实际运行效果(仅包含waterfall图表部分) component.vue <template><div ref"heatmap" :style"{ height: props.containerHeight px }" /> </template><script setup> import ColorMap from "color…...
代码随想录算法训练营第四十四天
sad的一天,明天开始上班,而且娃还行,媳妇儿状态不稳定,太难了也!!! 完全背包 #include<vector> #include<iostream> using namespace::std; int main(){int N;//种类int V;//空间ci…...
【3dmax笔记】027:配置修改器集、工具栏自定义与加载
文章目录 一、配置修改器集二、自定义工具栏三、加载工具栏 一、配置修改器集 可以把自己常用的修改命令放到右边框中的部分,便于自己的操作,省去了每次都要花半天时间找命令的尴尬。新建一个二维或者三维物体,点击修改面板,点击…...
Reactor模型详解
目录 1.概述 2.Single Reactor 3.muduo库的Multiple Reactors模型如下 1.概述 维基百科对Reactor模型的解释 The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs.…...
内存卡罢工,数据危机?别急,有救!
在日常生活和工作中,我们越来越依赖于各种电子设备来存储重要数据。其中,内存卡因其便携性和大容量而广受欢迎。然而,当内存卡突然损坏打不开时,我们该如何应对?本文将为您详细解析这一问题,并提供有效的解…...
python爬虫实战
import requests import json yesinput(输入页数:) yesint(yes)headers {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","content-type": "application/json",…...
k8s 资源文件参数介绍
Kubernetes资源文件yaml参数介绍 yaml 介绍 yaml 是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点例如 SpringBoot 的配置文件 application.yml 也是一个 yaml 格式的文件 语法格式 通过缩进表示层级关系不能使用tab进行缩进&am…...
mac系统安装steam报错-解决办法
今天给虚拟机装了个苹果系统,然后想装个steam,从steam的官方下载安装steam_osx.dmg时,总是报“steam_osx已损坏,无法打开,请移动到废纸篓“。搜了一下找到了解决办法,这里记录一下。 双击steam_osx.dmg时&…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
