《Linux从小白到高手》理论篇(十一):Linux的系统环境管理
值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。
环境变量
linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。环境变量可以让子程序继续引用的原因,是因为:
-
当启动一个 shell ,操作系统分配一记忆区块给 shell 使用,此区域之变量可以让子程序存取;
-
利用 export 功能,可以让变量的内容写到上述的记忆区块当中(环境变量);
当加载另一个 shell 时(亦即启动子程序,而离开原本的父程序了子 shell ),可以将父shell 的环境变量所在的记忆区块导入自己的环境变量区块当中。所以环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell(使用chsh命 令 )。根据发行版本的情况,bash有两个基本的系统级配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash), 后者在不同shell中固定。很明显,shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。
环境变量在 Linux 系统中起着重要的作用,它们可以影响命令的执行、程序的行为以及用户的工作环境。了解不同类型的环境变量有助于更好地管理和配置 Linux 系统。注:Linux的环境变量名称一般使用大写字母。

Linux环境变量的分类
在 Linux 中,环境变量主要有以下几种类型:
1、系统级环境变量
定义:由操作系统或系统启动脚本设置的环境变量,对整个系统的所有用户和进程都有效。
常见的系统级环境变量:
PATH:指定命令搜索路径,当你在终端输入一个命令时,系统会在PATH变量指定的目录中查找该命令的可执行文件。
HOME:表示用户的主目录路径。
LANG:设置系统的语言环境。
TERM:定义终端类型。
PWD:当前工作目录的路径。
2、用户级环境变量
定义:由用户在其个人的启动脚本(如.bashrc、.profile等)中设置的环境变量,只对该用户有效。
设置方式:用户可以通过编辑自己的 shell 启动脚本文件,添加或修改环境变量的定义。例如,在 Bash shell 中,可以在.bashrc文件中添加export VARIABLE_NAME=value来设置一个用户级环境变量。
作用范围:仅在该用户的登录会话和其所启动的进程中可见。
3、临时环境变量
定义:在当前 shell 会话中临时设置的环境变量,只在当前 shell 及其子进程中有效,当 shell 会话结束时,这些变量就会消失。
设置方式:可以使用export命令在命令行中直接设置临时环境变量。例如,export TEMP_VAR=some_value将设置一个名为TEMP_VAR的临时环境变量。
用途:通常用于在特定的任务或脚本执行期间临时修改环境变量的值,而不影响系统的整体配置或其他用户。
设置环境变量的方法
Linux中一般有3种方法设置环境变量,根据不同的需求设置环境变量,使其在不同的范围和时间内有效。在设置环境变量时,要注意变量名的唯一性和合法性,避免与系统已有的环境变量冲突:
1、在 shell 中临时设置
使用export命令:
在当前 shell 会话中,可以直接使用export命令来设置环境变量。例如,export MY_VARIABLE=value将设置一个名为MY_VARIABLE的环境变量,其值为value。
这种设置方式是临时的,仅在当前 shell 会话及其子进程中有效。当 shell 会话结束时,这个环境变量就会消失。
2、在用户的 shell 启动脚本中设置
Bash shell:
对于 Bash shell,用户可以编辑/.bashrc或/.profile文件来设置环境变量。这些文件在用户登录时被读取,从而使设置的环境变量在每次用户登录后的所有 shell 会话中都有效。
在文件中添加类似export MY_VARIABLE=value的行来设置环境变量。设置完成后,保存文件并重新打开一个终端或使用source ~/.bashrc(或source ~/.profile)命令使设置生效。
其他 shell:
不同的 shell 有不同的启动脚本。例如,对于 Zsh shell,用户可以编辑~/.zshrc文件来设置环境变量。
3、在系统级配置文件中设置
/etc/profile和/etc/environment:
在 Linux 系统中,/etc/profile是系统级的 shell 启动脚本,它在系统启动时被执行,用于设置一些系统级的环境变量和执行一些系统级的初始化任务。
/etc/environment文件也可以用于设置系统级的环境变量,但它的格式与/etc/profile略有不同。这个文件中的环境变量以 “变量名 = 值” 的形式列出,没有 shell 脚本的语法。
只有具有管理员权限的用户才能编辑这些文件。修改后,新的设置将在系统重启或用户重新登录后生效。
环境变量设置命令
1、export 命令
功能:用于在当前 shell 中设置或导出环境变量,使其对当前 shell 及其子进程可见。
用法:
export VARIABLE_NAME=value:
设置一个新的环境变量并赋值。例如,export MYVAR=123将设置环境变量MYVAR的值为 123。
export VARIABLE_NAME:如果只指定变量名而不赋值,它将把已有的同名变量导出到当前 shell 的环境中,使其对子进程可见。例如,如果在一个脚本中设置了一个变量,然后在该脚本中使用export VAR,那么在该脚本启动的其他程序中将可以访问VAR这个环境变量。
2、set 命令
功能:显示当前 shell 中的所有变量,包括环境变量、局部变量和 shell 变量等。
用法:
set:执行该命令将列出当前 shell 中的所有变量及其值。可以通过查看输出找到特定的环境变量。
3、env 命令
功能:显示当前系统中的所有环境变量。
用法:
env:执行该命令将列出系统中的所有环境变量及其值。这对于查看当前系统的环境设置非常有用。
4、declare 命令
功能:用于声明变量,包括环境变量。可以设置变量的属性,如类型、只读等。
用法:
declare -x VARIABLE_NAME=value:
声明一个新的环境变量并赋值。例如,declare -x MYENV=456将设置环境变量MYENV的值为 456。
declare -r VARIABLE_NAME:
将一个已有的变量声明为只读,防止其值被修改。例如,declare -r PATH将使PATH环境变量变为只读。
本篇完結。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者。
相关文章:
《Linux从小白到高手》理论篇(十一):Linux的系统环境管理
值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每…...
Qt/C++开源控件 自定义雷达控件
使用Qt框架创建一个简单的雷达图,包含动态扫描、目标点生成、刻度和方向标识。代码实现使用C编写,适合用作学习和扩展的基础。 1. 头文件与基本设置 #include "RadarWidget.h" #include <QPainter> #include <QPen> #include &…...
什么是IDE(集成开发环境)?
集成开发环境(IDE)详解 在软件开发的世界中,集成开发环境(IDE,Integrated Development Environment)扮演着至关重要的角色。它是一个综合性的软件应用程序,旨在为软件开发者提供一整套的、易于使用的工具集,以便他们能够更高效地编写、调试、测试和部署代码。简而言之…...
【Linux】用虚拟机配置Ubuntu 24.04.1 LTS环境
目录 1.虚拟机安装Ubuntu系统 2.Ubuntu系统的网络配置 3.特别声明 首先我们先要下载VMware软件,大家自己去下啊! 1.虚拟机安装Ubuntu系统 我们进去之后点击创建新的虚拟机,然后选择自定义 接着点下一步 再点下一步 进入这个界面之后&…...
MacOS升级Ruby版本详解:步骤、挑战与解决方案
MacOS升级Ruby版本详解:步骤、挑战与解决方案 在MacOS上升级Ruby版本是一个涉及多个步骤和考虑因素的过程。Ruby作为一种广泛使用的编程语言,其新版本通常会引入一系列改进,包括性能优化、安全修复和新特性。因此,升级Ruby版本不…...
Log4j的配置与使用详解
Log4j的配置与使用详解 Log4j介绍 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,我们可以控制每条日志的输出格式;只需要通过一个配置文件就可以灵活的配置,…...
docker 的目录有那些,分别存放什么东西
Docker 的目录结构和文件存放位置取决于你所使用的操作系统和Docker的版本。以下是一些常见的目录和它们通常存放的内容: 通用目录 /var/lib/docker (Linux) 这是Docker在Linux系统上的主要数据目录。存放了镜像、容器、数据卷、网络等的元数据和状态信息。具体结构…...
开源模型应用落地-模型微调-语料采集-数据格式化(四)
一、前言 在自然语言处理(NLP)的快速发展中,语料采集作为基础性的步骤显得尤为重要。它不仅为机器学习模型提供了所需的训练数据,还直接影响模型的性能和泛化能力。随着数据驱动技术的不断进步,如何有效并高效地收集、清洗和整理丰富多样的语料,已成为研究者和工程师们亟…...
C语言+单片机
今天内容有点水哈哈(忙着练焊铁技术了嘻嘻) C语言 简单学习了while语言以及其与for语言的区别和适用方法 .循环结构: 初始化语句条件判断句条件控制句 for语句 for(int1;i<100;i){执行条件} for (int i 1; i < 100; i) {printf(&quo…...
vmvare虚拟机centos 忘记超级管理员密码怎么办?
vmvare虚拟机centos 忘记超级管理员密码怎么办?如何重置密码呢? 一、前置操作 重启vmvare虚拟机的过程中,长按住Shift键 选择第一个的时候,按下按键 e 进入编辑状态。 然后就会进入到类似这个界面中。 在下方界面 添加 init=/bin/sh,然后按下Ctrl+x进行保存退出。 init=/bi…...
使用 Vue3 和 Axios 实现 CRUD 操作
文章目录 1、准备工作2、创建 Vue 3 项目3、项目结构4、实现 CRUD 操作5、运行项目6、小结在当今的前端开发中,Vue.js 作为一款流行的 JavaScript 框架,正在被越来越多的开发者所青睐。尤其是 Vue 3 引入了 Composition API 和更优雅的响应式处理,使得模板编写和状态管理变得…...
.NET MAUI(.NET Multi-platform App UI)下拉选框控件
MAUI下拉选框控件详解: 在开发跨平台应用程序时,下拉选框(ComboBox)是一个极为常见且实用的控件,它允许用户从一组预定义的选项中选择一个。在.NET MAUI(.NET Multi-platform App UI)框架中&am…...
C++平台跳跃游戏
目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件 程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好,我叫这是我58。 程序 Game.cpp源文件 #include <iostream> #include "Player.h" using namespace std; void printma…...
多系统萎缩患者必看!这些维生素助你对抗病魔
亲爱的朋友们,今天我们来聊聊一个相对陌生但重要的健康话题——多系统萎缩(MSA)。这是一种罕见的神经系统疾病,影响着患者的自主神经系统、运动系统和平衡功能。面对这样的挑战,科学合理的饮食和营养补充显得尤为重要。…...
深度学习模型性能优化实战之从评估到提升的全流程解析
1. 概述 在构建和使用机器学习模型的过程中,模型的效果评估和优化是两个至关重要的环节。无论模型是用于分类、回归还是其他任务,评估其表现以及持续优化模型性能,都是确保模型在实际应用中取得成功的关键。本节将重点介绍模型效果评估的定义…...
C++ | Leetcode C++题解之第446题等差数列划分II-子序列
题目: 题解: class Solution { public:int numberOfArithmeticSlices(vector<int> &nums) {int ans 0;int n nums.size();vector<unordered_map<long long, int>> f(n);for (int i 0; i < n; i) {for (int j 0; j < i;…...
【解密 Kotlin 扩展函数】扩展属性与扩展函数类似(十九)
导读大纲 1.1.1 扩展属性的创建和使用 1.1.1 扩展属性的创建和使用 之前, 我们已经了解声明 Kotlin 属性的语法 Kotlin中的顶级属性–传送门就像扩展函数一样,我们也可以指定扩展属性就像之前所说,属性和函数的区别在于前者是特征,后者是行为 相比扩展函…...
【Spring Boot 入门二】Spring Boot中的配置文件 - 掌控你的应用设置
一、引言 在上一篇文章中,我们开启了Spring Boot的入门之旅,成功构建了第一个Spring Boot应用。我们从环境搭建开始,详细介绍了JDK的安装以及IDE的选择与配置,然后利用Spring Initializr创建了项目,分析了项目结构&am…...
OpenCV第十二章——人脸识别
1.人脸跟踪 1.1 级联分类器 OpenCV中的级联分类器是一种基于AdaBoost算法的多级分类器,主要用于在图像中检测目标对象。以下是对其简单而全面的解释: 一、基本概念 级联分类器:是一种由多个简单分类器(弱分类器)级联组…...
深入Volatile
深入Volatile 1、变量不可见性: 1.1多线程下变量的不可见性 直接上代码 /*** author yourkin666* date 2024/08/12/16:12* description*/ public class h1 {public static void main(String[] args) {MyClass myClass new MyClass();myClass.start();while (tr…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
