LINUX---shell变量(或bash变量)和环境变量的区别

Shell 变量是特定于当前 shell 会话的变量。

作用范围:仅在当前 shell 会话中有效。如果你打开了多个终端窗口,每个窗口都有自己的一组 shell 变量,彼此独立。

生命周期:随着 shell 会话的结束而消失,不会传递给其他 shell 会话。

用途:用于在命令行中暂时存储数据,如临时变量或用于脚本中的数据。

设置方法:可以直接在命令行中设置,或通过脚本进行设置。

环境变量是可以在整个操作系统中被不同程序和进程共享的变量。

作用范围:在整个操作系统中都可见,供不同的程序和进程使用。

生命周期:在操作系统中持续存在,直到系统重启或手动删除。

用途:用于配置操作系统环境,如系统路径、用户配置等。

设置方法:通常通过配置文件(如 /etc/profile、~/.bashrc、~/.bash_profile)进行设置,可以使用 export 命令将 shell 变量导出为环境变量。


PATH环境变量有什么重要作用?

PATH 环境变量具有非常重要的作用。它定义了一系列目录,当用户在命令行输入一个命令时,系统会按照这些目录的顺序来搜索可执行文件。如果在这些目录中找到了对应的可执行文件,系统就会执行它。

主要作用

1.简化命令执行:用户不需要输入完整的路径就能运行程序或脚本。例如,当用户输入 ls 命令时,系统会在 PATH 环境变量定义的目录中搜索名为 ls 的可执行文件。

2.提高效率:通过将常用命令的路径添加到 PATH 中,用户可以在任何目录下直接运行这些命令,而不需要切换到特定目录。

3.灵活性:用户可以根据需要动态修改 PATH 环境变量,添加或移除目录,以适应不同的工作环境。

示例

  • 查看当前 PATH 值
    echo $PATH
    
  • 添加新目录到 PATH
    export PATH=$PATH:/new/directory/path
    

通过合理配置 PATH 环境变量,可以大大提高工作效率和操作的便利性。

分别在/etc/profile、~/.bash_profile 和 ~/.bashrc 设置环境变量时有什么区别?

/etc/profile、~/.bash_profile 和 ~/.bashrc 都可以用来设置环境变量,但它们的作用范围和加载时机有所不同:

/etc/profile

作用范围:系统级别。对系统中的所有用户生效。

加载时机:当用户登录时,所有兼容 POSIX 的 shell(如 Bash、sh)都会加载 /etc/profile。

用途:用于设置系统范围的环境变量和执行系统范围的初始化脚本。

~/.bash_profile

作用范围:用户级别。只对当前用户生效。

加载时机:当用户登录时,Bash shell 会加载 ~/.bash_profile。

用途:用于设置用户特定的环境变量和执行用户特定的初始化脚本。通常会包含一行代码来加载 ~/.bashrc,以确保登录 shell 也能加载 ~/.bashrc 中的配置:

~/.bashrc

作用范围:用户级别。只对当前用户生效。

加载时机:每次启动一个新的非登录交互式 shell 时,Bash shell 会加载 ~/.bashrc。例如,当你在终端中打开一个新的 shell 会话时,~/.bashrc 会被加载。

用途:用于设置用户特定的别名、函数和命令提示符等。

加载顺序和关系

登录 shell:当用户登录时,Bash shell 会按以下顺序加载配置文件:

    1. /etc/profile
    2. 用户的 ~/.bash_profile、~/.bash_login 或 ~/.profile(Bash 会按这个顺序查找并加载第一个找到的文件)

非登录交互式 shell:当用户启动一个新的非登录交互式 shell 时,Bash shell 会加载用户的 ~/.bashrc。

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

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

相关文章

Qt与下位机通信时,如何等待下位机回复和超时处理

在C或Qt中实现与下位机(例如嵌入式设备、传感器等)的通信,并且需要等待对方回复,如果几秒后没有收到回复则执行下一步动作,可以使用多种方法来实现这种超时机制。以下是几种常见的实现方式: 1. 使用 QTime…

springboot整合lombok

只需要引入lombok依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version></dependency> 然后application.yml配置文件中加上 logging: level: …

【Codeforces】CF 1082 G

Petya and Graph #网络流 #图论 #最小割 题目描述 Petya has a simple graph (that is, a graph without loops or multiple edges) consisting of n n n vertices and m m m edges. The weight of the i i i-th vertex is a i a_i ai​. The weight of the i i i-th…

Qt入门教程:创建我的第一个小程序

本章教程&#xff0c;主要介绍如何编写一个简单的QT小程序。主要是介绍创建项目的过程。 一、打开QT软件编辑器 这里使用的是QT5.14.2版本的&#xff0c;安装教程参考以往教程&#xff1a;https://blog.csdn.net/qq_19309473/article/details/142907096 二、创建项目 到这里&am…

【Docker】03-自制镜像

1. 自制镜像 2. Dockerfile # 基础镜像 FROM openjdk:11.0-jre-buster # 设定时区 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 拷贝jar包 COPY docker-demo.jar /app.jar # 入口 ENTRYPOINT ["ja…

Flutter应用解析(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范&#xff0c;其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码&#xff08;为了阅…

【机器学习】朴素贝叶斯算法|商品评论情感分析案例介绍及代码实现

文章目录 朴素贝叶斯算法朴素贝叶斯算法介绍概率数学基础复习朴素贝叶斯算法-利用概率值进行分类的一种机器学习算法贝叶斯公式朴素贝叶斯算法拉普拉斯平滑系数 朴素贝叶斯API案例分析流程数据集代码实现运行结果 朴素贝叶斯算法 朴素贝叶斯算法介绍 概率数学基础复习 条件概…

linux中通过一个命令启动任何java的jar包

由于需要在linux中需要启动N多个jar包,以下是写的一个通用脚本: #!/bin/bash if [ $# -ne 2 ]; then echo "用法: $0 <命令> <模块名称>" exit 1 fi MODEL_NAME=$2 APP_NAME="${MODEL_NAME}" echo $APP_NAME JARFILE="${MODEL_NA…

架构设计笔记-11-未来信息综合技术

知识要点 云原生架构原则包括&#xff1a;服务化原则、弹性原则、可观测原则、韧性原则、所有过程自动化原则、零信任原则和架构持续演进原则。 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构&#xff0c;并以密码学方式保证的不可篡改和不可…

有缺陷的 Java 代码:Java 开发人员最常犯的 10 大错误

Java 是一种复杂的编程语言&#xff0c;很长一段时间以来一直主导着许多生态系统。可移植性、自动垃圾回收及其温和的学习曲线是使其成为软件开发的绝佳选择的一些因素。但是&#xff0c;与任何其他编程语言一样&#xff0c;它仍然容易受到开发人员错误的影响。 本文探讨了 Jav…

CVE-2022-26965靶机渗透

​ 开启环境 ​ ​ 进入环境 ​ ​ 使用弱口令admin登录 ​ ​ 利用cms主题构造木马 ​ 需要将主题中的info.php文件修改&#xff0c;再打包成zip再上传&#xff0c;通过网络搜索找到Github中的Pluck CMS&#xff0c;进入后随便下载任一主题 https://github.com/sear…

c# using 声明进行资源管理

在 C# 8 中&#xff0c;using 声明引入了一种新的语法&#xff0c;称为 using 声明&#xff0c;它使得开发人员在处理资源时的代码更加简洁和清晰。主要的变化包括 使用声明 和 使用上下文&#xff08;using declaration&#xff09; 的引入。 使用语句的简化 在 C# 8 中&…

服务性能优化之mybatis-plus 开启与关闭 SQL 日志打印

Hello&#xff01;欢迎各位新老朋友来看小弟博客&#xff0c;祝大家事业顺利&#xff0c;财源广进&#xff01;&#xff01; 主题&#xff1a;mybatis-plus 开启与关闭 SQL 日志打印 第一&#xff1a;开启打印 Mybatis-plus 需要通过下面的方式开启控制台 SQL 日志打印 myba…

智能听诊器:宠物健康管理的革命

智能听诊器不仅仅是一个简单的监测工具&#xff0c;它代表了宠物健康管理的一次革命。通过收集和分析宠物的生理数据&#xff0c;智能听诊器能够帮助宠物主人和医生更好地理解宠物的健康需求&#xff0c;从而提供更加个性化的护理方案。 智能听诊器通过高精度的传感器&#xf…

和鲸科技创始人范向伟:拐点即将来临,AI产业当前的三个瓶颈

在科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑已经成为引领新一轮产业革命的核心动力之一。全球企业纷纷拥抱AI技术&#xff0c;试图借助其变革力量在竞争中突围&#xff0c;然而业界对AI产业化的拐点何时来临却众说纷纭。毕竟AI技术从实验室到商业…

4K变倍镜头特点

1、高分辨率成像&#xff1a; ① 能够呈现清晰、细腻的图像&#xff0c;可清晰快速地识别出被测物体的微小细节、特征以及潜在的缺陷等。例如在芯片外观瑕疵检测中&#xff0c;能清晰地分辨出芯片上的刮痕、污渍、破损、引脚缺失等问题。 ② 相比传统的变倍镜头&#xff0c;在…

【VUE】Vue的diff算法和React的diff算法

React和Vue都使用了虚拟DOM来进行高效的页面更新&#xff0c;但它们在实现细节上有一些差异。下面是React和Vue的diff算法的异同点&#xff1a; 异同点&#xff1a; 目标&#xff1a;React和Vue的diff算法的目标都是尽量减少DOM操作的次数&#xff0c;提高页面更新的性能。虚…

LabVIEW提高开发效率技巧----队列使用

在LabVIEW开发中&#xff0c;队列是实现并行处理、数据传递和任务调度的关键机制之一&#xff0c;合理使用队列可以有效提高程序性能并避免内存问题。结合队列长度限制和其他队列相关技巧&#xff0c;以下是队列使用的详细说明&#xff1a; 1. 队列长度限制 限制队列的长度可以…

全面讲解C++

数据类型 1.1 基本数据类型 1.1.1 整型&#xff08;Integer Types&#xff09; 整型用于表示整数值&#xff0c;分为以下几种类型&#xff1a; int&#xff1a;标准整数类型&#xff0c;通常为4字节&#xff08;32位&#xff09;。short&#xff1a;短整型&#xff0c;通常…

Python网络爬虫技术

Python网络爬虫技术详解 引言 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;又称网络蜘蛛&#xff08;Web Spider&#xff09;或网络机器人&#xff08;Web Robot&#xff09;&#xff0c;是一种按照一定规则自动抓取互联网信息的程序或脚本。它们通过遍历网页链…