当前位置: 首页 > news >正文

《Linux从小白到高手》理论篇(十一):Linux的系统环境管理

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。

环境变量

linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。环境变量可以让子程序继续引用的原因,是因为:

  1. 当启动一个 shell ,操作系统分配一记忆区块给 shell 使用,此区域之变量可以让子程序存取;

  2. 利用 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框架创建一个简单的雷达图&#xff0c;包含动态扫描、目标点生成、刻度和方向标识。代码实现使用C编写&#xff0c;适合用作学习和扩展的基础。 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软件&#xff0c;大家自己去下啊&#xff01; 1.虚拟机安装Ubuntu系统 我们进去之后点击创建新的虚拟机&#xff0c;然后选择自定义 接着点下一步 再点下一步 进入这个界面之后&…...

MacOS升级Ruby版本详解:步骤、挑战与解决方案

MacOS升级Ruby版本详解&#xff1a;步骤、挑战与解决方案 在MacOS上升级Ruby版本是一个涉及多个步骤和考虑因素的过程。Ruby作为一种广泛使用的编程语言&#xff0c;其新版本通常会引入一系列改进&#xff0c;包括性能优化、安全修复和新特性。因此&#xff0c;升级Ruby版本不…...

Log4j的配置与使用详解

Log4j的配置与使用详解 Log4j介绍 Log4j是Apache的一个开源项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件&#xff0c;我们可以控制每条日志的输出格式&#xff1b;只需要通过一个配置文件就可以灵活的配置&#xff0c…...

docker 的目录有那些,分别存放什么东西

Docker 的目录结构和文件存放位置取决于你所使用的操作系统和Docker的版本。以下是一些常见的目录和它们通常存放的内容&#xff1a; 通用目录 /var/lib/docker (Linux) 这是Docker在Linux系统上的主要数据目录。存放了镜像、容器、数据卷、网络等的元数据和状态信息。具体结构…...

开源模型应用落地-模型微调-语料采集-数据格式化(四)

一、前言 在自然语言处理(NLP)的快速发展中,语料采集作为基础性的步骤显得尤为重要。它不仅为机器学习模型提供了所需的训练数据,还直接影响模型的性能和泛化能力。随着数据驱动技术的不断进步,如何有效并高效地收集、清洗和整理丰富多样的语料,已成为研究者和工程师们亟…...

C语言+单片机

今天内容有点水哈哈&#xff08;忙着练焊铁技术了嘻嘻&#xff09; C语言 简单学习了while语言以及其与for语言的区别和适用方法 .循环结构&#xff1a; 初始化语句条件判断句条件控制句 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下拉选框控件详解&#xff1a; 在开发跨平台应用程序时&#xff0c;下拉选框&#xff08;ComboBox&#xff09;是一个极为常见且实用的控件&#xff0c;它允许用户从一组预定义的选项中选择一个。在.NET MAUI&#xff08;.NET Multi-platform App UI&#xff09;框架中&am…...

C++平台跳跃游戏

目录 开头程序Game.cpp源文件Player.h头文件Player.cpp源文件 程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 Game.cpp源文件 #include <iostream> #include "Player.h" using namespace std; void printma…...

多系统萎缩患者必看!这些维生素助你对抗病魔

亲爱的朋友们&#xff0c;今天我们来聊聊一个相对陌生但重要的健康话题——多系统萎缩&#xff08;MSA&#xff09;。这是一种罕见的神经系统疾病&#xff0c;影响着患者的自主神经系统、运动系统和平衡功能。面对这样的挑战&#xff0c;科学合理的饮食和营养补充显得尤为重要。…...

深度学习模型性能优化实战之从评估到提升的全流程解析

1. 概述 在构建和使用机器学习模型的过程中&#xff0c;模型的效果评估和优化是两个至关重要的环节。无论模型是用于分类、回归还是其他任务&#xff0c;评估其表现以及持续优化模型性能&#xff0c;都是确保模型在实际应用中取得成功的关键。本节将重点介绍模型效果评估的定义…...

C++ | Leetcode C++题解之第446题等差数列划分II-子序列

题目&#xff1a; 题解&#xff1a; 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中的顶级属性–传送门就像扩展函数一样,我们也可以指定扩展属性就像之前所说&#xff0c;属性和函数的区别在于前者是特征&#xff0c;后者是行为 相比扩展函…...

【Spring Boot 入门二】Spring Boot中的配置文件 - 掌控你的应用设置

一、引言 在上一篇文章中&#xff0c;我们开启了Spring Boot的入门之旅&#xff0c;成功构建了第一个Spring Boot应用。我们从环境搭建开始&#xff0c;详细介绍了JDK的安装以及IDE的选择与配置&#xff0c;然后利用Spring Initializr创建了项目&#xff0c;分析了项目结构&am…...

OpenCV第十二章——人脸识别

1.人脸跟踪 1.1 级联分类器 OpenCV中的级联分类器是一种基于AdaBoost算法的多级分类器&#xff0c;主要用于在图像中检测目标对象。以下是对其简单而全面的解释&#xff1a; 一、基本概念 级联分类器&#xff1a;是一种由多个简单分类器&#xff08;弱分类器&#xff09;级联组…...

深入Volatile

深入Volatile 1、变量不可见性&#xff1a; 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…...

数据结构 ——— 顺序表oj题:编写函数,合并两个有序数组

目录 题目要求 代码实现 题目要求 nums1 和 nums2 是两个升序的整型数组&#xff0c;另外有两个整数 m 和 n 分别代表 nums1 和 nums2 中的元素个数 要求合并 nusm2 到nums1 中&#xff0c;使合并后的 nums1 同样按升序顺序排列 最终&#xff0c;合并后的数组不应由函数返…...

Proto文件相关知识

百度Apollo的数据结构常用proto文件来定义&#xff0c; proto文件允许你以类似于C结构体或类的方式定义数据结构。你可以在这个文件中定义简单数据类型、枚举、消息类型等。 基于proto文件&#xff0c;Protocol Buffers编译器&#xff08;protoc&#xff09;可以自动生成对应的…...

k8s的控制节点不能访问node节点容器的ip地址

master控制node服务器添加容器后,访问不了该node服务器容器的ip,只能在node服务器访问 排查后发现是k8s的master服务器和node节点的网址网段和k8s初始化时提示的ip网段不一致 我之前是192.168.137.50, 实际上master主机期望的是192.168.1.50 解决方案: 1.删除服务器后重建ma…...

鸿蒙OpenHarmony

开源鸿蒙系统编译指南 Ubuntu编译环境配置第一步&#xff1a;Shell 改 Bash第二步&#xff1a;安装Git和安装pip3工具第三步&#xff1a;远程仓配置第四步&#xff1a;拉取代码第五步&#xff1a;安装编译环境第六步&#xff1a;本地编译源码 Windows开发环境配置第一步&#x…...

把白底照片变蓝色用什么软件免费 批量更换证件照底色怎么弄

作为专业的修图师&#xff0c;有时候也会接手证件照修图和换底色工作&#xff0c;这种情况下&#xff0c;需要换底色的照片也许达到上百张。为了提高工作效率&#xff0c;一般需要批量快速修图&#xff0c;那么使用什么软件工具能够给各式不同的照片批量更换背景色呢&#xff1…...

Spring之生成Bean

Bean的生命周期&#xff1a;实例化->属性填充->初始化->销毁 核心入口方法&#xff1a;finishBeanFactoryInitialization-->preInstantiateSingletons DefaultListableBeanFactory#preInstantiateSingletons用于实例化非懒加载的bean。 1.preInstantiateSinglet…...

笔记整理—linux进程部分(6)进程间通信、alarm和pause

两个进程间通信可能是任何两个进程间的通信&#xff08;IPC&#xff09;。同一个进程是在同一块地址空间中的&#xff0c;在不同的函数与文件以变量进程传递&#xff0c;也可通过形参传递。2个不同进程处于不同的地址空间&#xff0c;要互相通信有难度&#xff08;内存隔离的原…...

Java网络通信—UDP

0.小记 1.udp通信不需要建立socket管道&#xff0c;一边只管发&#xff0c;一边只管收 2.客户端&#xff1a;将数据&#xff08;byte&#xff09;打包成包裹&#xff08;DatagramPacket&#xff09;&#xff0c;写上地址&#xff08;IP端口&#xff09;&#xff0c;通过快递站&…...

k8s架构,从clusterIP到光电半导体,再从clusterIP到企业管理

clusterIP作为k8s中的服务&#xff0c; 也是其他三个服务的基础 ~]$ kubectl create service clusterip externalname loadbalancer nodeport 客户端的流量到service service分发给pod&#xff0c;pod由控制器自动部署&#xff0c;自动维护 那么问题是service的可用…...

vue框架和uniapp框架区别

文章目录 vue框架和uniapp框架区别一、引言二、Vue.js 概述1、Vue.js 简介1.1、特点 2、适用场景 三、Uni-app 概述1、Uni-app 简介1.1、特点 2、适用场景 四、区别与比较1、跨平台能力2、开发体验3、性能优化4、社区和支持 五、总结 vue框架和uniapp框架区别 一、引言 在前端…...

iis wordpress index.php/iis7站长工具

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

心理学重点学科建设网站/搜索百度网址网页

学习《流畅的Python》&#xff0c;后续系列博客大部分均摘自本书&#xff0c;仅用于交流、学习和记录。 把函数视作对象 文章目录把函数视作对象1. 一等函数2. 高阶函数3. 可调用对象4. 用户可调用的类型5. 函数注解6. 支持函数式编程的包1. 一等函数 Python 中&#xff0c;函…...

计算机网站开发论文参考文献/网页点击量统计

1. 问题描述&#xff1a; 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间&#xff08;包括二者&#xff09;奇数的数目。 示例 1&#xff1a; 输入&#xff1a;low 3, high 7 输出&#xff1a;3 解释&#xff1a;3 到 7 之间奇数数字为 [3,5,7] 。 示例 2&am…...

wordpress表单微信/怎样建立自己网站

第二课&#xff1a; 执行shell脚本的几种方式 chmod x shtest.sh./ shtest.shsh shtest.sh管道操作find /etc -name "*.conf" | wc -lps aux | grep httpdbash shtest.shsource shtest.sh重定向cat version.txt version.txt2 &> error.txt < 从文本中写入…...

wordpress wpenqueuescript/营销网站建设规划

KindEditor是一套开源的HTML可视化编辑器&#xff0c;主要用于让用户在网站上获得所见即所得编辑效果&#xff0c;兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。 KindEditor使用JavaScript编写&#xff0c;可以无缝的与Java、.NET、PHP、ASP等程序接合。这个是官网上的…...

wordpress禁止自适应/东莞网站制作的公司

haproxy 介绍1 工作在ISO 七层 根据http协议&#xff08;或者工作在ISO四层 根据tcp协议&#xff09; 提供web服务的负载均衡调度器负载均衡调度器分类 工作在四层&#xff1a; # lvs 工作在七层&#xff1a; # nginx &#xff08;web&#xff0c;http reverse proxy&#…...