《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…...
基于PSCAD的光伏-火电打捆直流送出系统建模与扰动特性仿真研究
基于PSCAD的光伏-火电打捆直流送出系统建模与扰动特性仿真研究 摘要 随着我国“双碳”目标的深入推进,以光伏为代表的新能源发电装机规模持续快速增长。然而,光伏发电具有间歇性和波动性特征,大规模并网对电力系统的安全稳定运行提出了严峻挑战。将光伏与火电打捆经高压直…...
Arm CoreSight调试架构与寄存器安全机制详解
1. Arm CoreSight调试架构概述在嵌入式系统开发领域,调试接口的设计质量直接影响着开发效率和问题定位能力。Arm CoreSight架构作为业界领先的调试与追踪解决方案,通过标准化的寄存器映射和总线协议,为SoC设计提供了完整的调试基础设施。这套…...
基于vDisk的IDV云桌面机房建设方案解析
基于vDisk的IDV云桌面机房建设方案解析本文为教学机房新建/改造场景下,基于vDisk的IDV云桌面落地建设方案,由上海澄成信息技术有限公司提供产品支撑,核心采用澄成 vDisk IDV云桌面的镜像磁盘统一管理能力,配套AI教学环境升级模块&…...
【日常小问】解决 Jenkins 部署 Spring Cloud 微服务到 Docker 容器启动失败的问题
一、问题出现在使用 Jenkins 进行 CI/CD 部署 Spring Cloud 微服务项目时,遇到了一个让人头疼的问题:所有通过 Jenkins 构建的 Docker 容器启动后立即退出,状态码为 Exited (1)。查看容器日志,报错信息如下:**********…...
双模型工作流架构解析:从原理到实践,构建高效AI应用
1. 项目概述:双模型工作流的魅力与挑战最近在GitHub上看到一个挺有意思的项目,叫cait52099/openclaw-dual-model-workflow。光看名字,openclaw(开放之爪)和dual-model-workflow(双模型工作流)这…...
Dify工作流智能生成器:用自然语言快速构建AI应用
1. 项目概述:一个为Dify AI工作流“编程”的智能生成器如果你正在使用Dify构建AI应用,并且对反复拖拽节点、配置连线、调试参数感到一丝疲惫,那么Tomatio13/DifyWorkFlowGenerator这个项目可能会让你眼前一亮。它本质上是一个“用自然语言描述…...
使用 Python 快速接入 Taotoken 并调用多模型 API 的完整指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 Python 快速接入 Taotoken 并调用多模型 API 的完整指南 对于希望快速集成大模型能力的 Python 开发者而言,逐一对…...
TalkReplay:构建本地化AI编程对话时光机,实现知识持久化管理
1. 项目概述:一个为AI编程对话而生的“时光机”如果你和我一样,日常开发已经离不开Claude、Cursor这类AI编程助手,那你一定遇到过这个痛点:和AI进行了一下午的深度对话,写了几百行代码,解决了几个关键问题。…...
别再傻傻用余弦相似度了!手把手教你用ResNet50+LSHash搞定海量图片秒级检索(附完整Python代码)
别再傻傻用余弦相似度了!手把手教你用ResNet50LSHash搞定海量图片秒级检索 当你的图片库从几千张膨胀到几百万张时,用传统余弦相似度做图像检索就像在高速公路上骑自行车——明明有更快的交通工具,你却还在用最原始的方法。最近帮一家电商平台…...
【深度解析】Hermes Agent:持久记忆、自学习闭环与桌面化 Autonomous AI 工作流实践
摘要 Hermes Agent 的核心价值不只是“带工具的聊天机器人”,而是面向长期运行的自主智能体系统。本文从持久记忆、自学习技能、工具编排和桌面化管理角度,解析其架构思想,并给出一个可落地的 Python 实战示例。背景介绍:从 Chatb…...
