【linux】linux环境变量初始化与对应文件的生效顺序

news2024/11/18 12:30:18

1.认识环境变量(PATH)

环境变量(PATH)是一个列表,里面是有序的一些程序的地址(一般是xxx/bin),添加环境变量后,系统在任何目录输入命令,都可以识别命令并执行命令对应程序。环境变量的作用就是告诉系统可以去这些地方找。

系统查找的顺序是:当前目录-系统变量列表依次-环境变量列表依次

2. 认识环境文件

(1) /etc/profile:系统配置文件,用户登录时读取一次
(2) /etc/bash.bashrc:(Ubuntu)系统配置文件,用户登录时读取一次,每次打开一个新终端会话时读取一次。
/etc/bashrc: (Centos)系统配置文件,用户登录时读取一次,每次打开一个新终端会话时读取一次。
(3) ~/.profile (~/.bash_profile、~/.bash_login):用户配置文件,用户登录时读取一次
(4) ~/.bashrc:用户配置文件,用户登录时读取一次,每次打开一个新终端会话时读取一次

1、系统配置文件作用于全局,而用户配置文件仅针对当前登录的用户
2、先读取系统配置文件,再读取用户配置文件,用户配置文件的变量和表达式等都继承自系统配置文件

3. 环境变量初始化原理

在登录Linux系统并启动一个 bash shell 时,默认情况下 bash 会在若干个文件中查找环境变量的设置,这些文件可统称为系统环境文件,bash 检查的环境变量文件的情况取决于系统运行 Shell 的方式,系统运行 Shell 的方式有 3 种:

(1)通过系统用户登录后默认运行的 Shell
(2)非登录交互式运行 Shell
(3)执行脚本运行非交互式 Shell

这三类可以对于环境变量生效的影响可以分为两类:登录式shell非登录式shell

3.1. 登录shell方式进入Linux

账号和密码登录——>/etc/profile(全局文件G1)——>/etc/profile.d/(全局脚本目录F1)——> ~/.profile(用户文件U1)——> ~/.bashrc(用户文件U2)——>/etc/bash.bashrc(全局文件G2)

当用户登录 Linux 系统时,Shell 会作为登录 Shell 启动,此时的登录 Shell 加载环境变量的顺序如上图。

用户登录系统后首先会加载 /etc/profile 全局环境变量文件,这是 Linux 系统上默认的 Shell 主环境变量文件,系统上每个用户登录都会加载这个文件。

当加载完 /etc/profile 文件后,才会执行 /etc/profile.d/目录下的脚本文件,这个目录下的脚本文件有很多,如下图,以便用户登录后即可运行脚本
在这里插入图片描述

之后开始运行 ~/.profile(用户环境变量文件),在这个文件中,又会去找 ~/.bashrc(用户环境变量文件),如果有,则执行,如果没有,则不执行,在 ~/.bashrc文件中又会去找/etc/bash.bashrc(全局环境变量文件),如果有,则执行,如果没有,则不执行。

3.2. 非登录Shell方式进入Linux

不需要输入密码的登录 or 远程 SSH 连接——> ~/.bashrc(用户文件U2)——>/etc/bash.bashrc(全局文件G2)

如果用户的Shell 不是登录时启动的(比如手动敲下 bash 时启动或者其他不需要输入密码的登录及远程 SSH 连接情况)那么这种非登录 Shell 只会加载 ~/.bashrc(用户环境变量文件),并会去找 /etc/bash.bashrc(全局环境变量文件)。

  • 因此如果希望在非登录 Shell 下也可读到设置的环境变量等内容,就需要将变量设定写入 ~/.bashrc 或者 /etc/bashrc,而不是 ~/.bash_profile或/etc/profile。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个工程师的自我修养!

Datawhale干货 Tw93,前端工程师,Datawhale邀约作者对计算机科学的掌握程度,决定了一个计算机行业从业者能走多远。吴军博士在《浪潮之巅(第四版)》对工程师做了五个级别的划分:一级:能够开创一个…

询问ChatGPT来了解什么是边缘计算,有哪些特点,有哪些关键技术,和云计算的关系是什么?

什么是云计算 云计算是一种计算架构,它使用互联网作为基础设施,允许用户通过网络访问共享的计算资源,而不需要拥有专门的本地计算机硬件和软件。云计算提供了计算能力、存储空间、应用程序和服务等,并使用计费模型收取使用费用。…

springboot基于ssm框架实现的家具商城管理系统

一、项目简介 本项目是一套基于springboot框架实现的家具商城管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试&#…

为什么在SPI通信中提供不同的模式?

SPI传输模式 因为SPI是全双工也就是说(MOSI和MISO)上同时发送和接收数据 时钟极性(CPOL) 时钟相位(CPHA)是定义SPI总线使用的时钟格式得主要参数,根据SPOL参数,SPI时钟可以是反向或…

寻找两个正序数组的中位数K个一组翻转链表

文章目录1. [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/)2. [K个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/)1. 寻找两个正序数组的中位数 首先, 中位数的作用就是将正序数组的两端进行分…

[内网渗透]—权限维持

Skeleton Key(万能密码) 原理 当拿到域控权限后,使用mimikatz可以注入Skeleon Key,将 Skeleton Key 注入域控制器的 lsass.exe 进程,这样会在域内的所有账号中添加一个 Skeleton Key,而这个key是自己设定的所以可以随时共享访问。 PS:由于注入到lsass.exe进程中,所以每…

JS图解 | Java程序员的JS | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘JS 该笔记特点是 重新整理了涉及资料的一些语言描述、排版而使用了自己的描述对一些地方做了补充说明。比如解释专有名词、类比说明、对比说明、注意事项提升了总结归纳性。尽可能在每个知识点上都使用一句话 || 关键词概括更注重在实际上怎么应用提出并回答了…

跟腾讯架构大师学网络框架与后台架构

目录 跟腾讯架构大师学网络框架与后台架构 单机服务 1、单机服务:基本概念 2、单机服务:同步阻塞​编辑 3、单机服务:异步非阻塞框架 4、单机服务:典型框架: 5、单机服务:协程框架 6、单机服务&…

Spring之自定义Bean何时被扫描注册?

1. 前言 在AnnotationConfigApplicationContext的构造函数里,Spring会创建AnnotatedBeanDefinitionReader对象,它的基本作用是将基于注解的BeanClass封装成BeanDefinition,并注册到BeanFactory中。同时AnnotatedBeanDefinitionReader的构造函…

计算机毕业设计springboot+vue景区疫情预警系统

项目介绍 本景区疫情预警系统是针对目前景区疫情预警的实际需求,从实际工作出发,对过去的景区疫情预警系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结…

垃圾回收器

文章目录1. 垃圾回收器分类2. 不同垃圾回收器概述3. Serial与Serial Old垃圾回收器:串行回收4. ParNew垃圾回收器:并行回收5. Parallel与Parallel Old垃圾回收器:吞吐量优先6. CMS回收器:低延迟7. G1回收器:区域分代式…

web前端-javascript-初识Array数组(说明,初步创建,添加元素和读取元素,获取和修改数组的 length 长度,最后一个位置添加元素)

初识 Array 数组 1. 说明 数组也是一个对象它和普通的对象功能类似,也是用来存储一些值的不同的是普通对象是使用字符串作为属性名的 而数组是使用数字来作为索引来操作元素 索引: 从 0 开始的整数就是索引 数组的存储性能比普通对象要好,在…

【记录】Ubuntu20.04安装CUDA和cuDNN

本文记录下如何在Ubuntu20.04系统中安装CUDA和cuDNN。 这里简要介绍下CUDA和cuDNN分别是什么。CUDA 是 NVIDIA 发明的一种并行计算平台和编程模型。它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能;cuDNN(深度神经网络库)是GPU加速的用于深度…

《西西弗神话》笔记——不期待人生可以过得很顺利,但我希望碰到人生难关的时候,自己可以是它的对手

目录 一、作者生平 二、经典摘录 1、悲剧从本质上讲是对苦难的反抗 2、自杀实质上是一种逃避,它是反抗的对立面 3、不是否认生活本身 4、书的宗旨就是要讨论荒谬与自杀的关系 5、真正严肃的哲学问题只有一个:自杀 6、了解人是否能够义无反顾地生…

【2022.12.16】备战春招Day11——每日一题 + 142. 环形链表 II + 93. 复原 IP 地址

【每日一题】 1785. 构成特定和需要添加的最少元素 题目描述 给你一个整数数组 nums &#xff0c;和两个整数 limit 与 goal 。数组 nums 有一条重要属性&#xff1a;abs(nums[i]) < limit 。 返回使数组元素总和等于 goal 所需要向数组中添加的最少元素数量 &#xff0c;添…

SQL语句练习05

目录 一、建表并插入数据 二、查询语句练习 一、建表并插入数据 一、建立如下 &#x1d446; 表(命名格式“姓名拼音_三位学号_week7s”&#xff0c;如LBJ_023_week7s&#xff09;&#xff0c;并插入数据 create table LYL_116_week7s(SNO varchar(3),SNAME varchar(10), CI…

【数据结构Java版】Stack栈的妙用

目录 一、栈的概念 二、栈的使用 &#xff08;1&#xff09;主要方法 &#xff08;2&#xff09;实例演示 三、栈的模拟实现 四、栈相关练习题 &#xff08;1&#xff09;有效的括号 &#xff08;2&#xff09;栈的压入、弹出序列 &#xff08;3&#xff09;逆波兰表达…

SpringBoot中mapper-locations配置多个mapper包路径

1 问题描述 大家都知道mapper-locations是配置mapper路径的&#xff0c;但是有时候mapper路径可能不止一个 比如说有两个包A和B&#xff0c;A和B里面的业务模块不同就需要写各自的mapper&#xff0c;这时候如果只配置A的mapper路径&#xff0c;那么B的mapper路径肯定扫码不到…

无法打开jupyter notebook

无法打开jupyter notebook遇到的问题问题分析tornado什么是tornado?如何更新tornado问题解决解决方法一解决方法二参考资料遇到的问题 今天打开anaconda prompt的时候想要打开jupyter notebook,但是遇到的了如下报错: Traceback (most recent call last): File “C:\ProgramD…

C++ Reference: Standard C++ Library reference: Containers: map: multimap: begin

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/multimap/begin/ 公有成员函数 <map> std::multimap::begin C98 iterator begin(); const_iterator begin() const; C11 iterator begin() noexcept; const_iterator begin() const noexcept;返回指向开…