linux中bashrc和profile环境变量在Shell编程变量的传递作用
在 Linux 系统中,.bashrc
文件和.profile
文件都是用于配置用户环境的重要文件,它们之间有以下关联:
一、作用相似性
- 环境设置:两者都用于设置用户的环境变量和启动应用程序的配置。例如,它们可以定义路径变量(
PATH
)、设置别名、定义特定于用户的函数等。这些设置可以使命令行操作更加高效和便捷。 - 个性化配置:用户可以根据自己的需求在这两个文件中进行个性化的配置,以适应不同的工作环境和习惯。比如,可以设置特定的编辑器、添加自定义的命令别名等。
二、加载顺序与交互
-
加载时机:
.profile
文件通常在用户登录时被读取。当用户登录到系统时,系统会首先加载这个文件来设置一些基本的环境变量和执行一些初始化任务。.bashrc
文件则在每次启动新的 Bash shell 时被读取。这包括用户打开一个新的终端窗口或在当前终端中启动一个新的 Bash 子进程。
-
交互关系:
- 在 Bash 中,当用户登录时,系统会先加载
.profile
文件。如果.profile
文件中包含了对.bashrc
文件的引用(例如通过source ~/.bashrc
命令),那么在登录过程中也会加载.bashrc
文件。这样可以确保在登录时和后续的 Bash 会话中都能应用.bashrc
中的配置。 - 另一方面,如果用户只是打开一个新的终端窗口而不是进行完整的登录过程,那么只有
.bashrc
文件会被加载。
- 在 Bash 中,当用户登录时,系统会先加载
三、使用场景的互补
.profile
更适合用于系统级的、与登录相关的配置。例如,可以在这个文件中设置一些全局的环境变量,如JAVA_HOME
、PATH
等,这些变量可能需要在用户登录到系统后立即生效,并且在不同的 shell 中都能使用。.bashrc
则更侧重于与 Bash shell 相关的配置。比如,可以在这个文件中定义一些 Bash 特定的别名、函数和提示符设置。这些配置只会在 Bash shell 中生效,并且在每次启动新的 Bash 会话时重新加载,方便用户根据需要进行动态调整。
.bashrc
文件和.profile
文件在 Linux 系统中都起着重要的作用,它们相互关联,共同为用户提供了一个个性化和高效的命令行环境。用户可以根据自己的需求在这两个文件中进行适当的配置,以满足不同的使用场景。
四、在Linux Shell编程脚本变量的关系
在 Linux 中的 shell 编程中,不同文件的 shell 脚本通常情况下变量作用域是不共享的。
一、单个脚本内的变量作用域
在一个 shell 脚本中,变量可以分为局部变量和环境变量。局部变量仅在当前脚本内有效,其作用域仅限于定义它的代码块或函数内部(如果有函数的话)。环境变量可以在脚本内的任何地方被访问,并且如果通过适当的方式设置,还可以被该脚本启动的子进程访问。
例如:
#!/bin/bash
local_var="This is a local variable"
echo "Inside script: $local_var"
这里的local_var是一个局部变量,在这个脚本之外是不可见的。
不同脚本之间变量不共享,不同的 shell 脚本在执行时是相互独立的实体,一个脚本中定义的变量在另一个脚本中是不可访问的。
例如,假设有两个脚本script1.sh和script2.sh:
# script1.shvar1="Value in script1"
# script2.sh# Here, var1 is not accessible
在script2.sh中无法直接访问script1.sh中定义的var1。
五、Shell编程开时在子进程中传递变量值
当一个 shell 脚本启动另一个程序或脚本时,新启动的程序或脚本会作为子进程运行。如果一个变量被export设置为环境变量,那么这个变量的值可以在子进程中被访问。
例如,有两个脚本parent.sh和child.sh:
# parent.sh
VAR_IN_PARENT="Value in parent"
export VAR_IN_PARENT
./child.sh
# child.sh
echo "Value from parent: $VAR_IN_PARENT"
六、跨不同 shell 会话共享变量,通过环境变量进行一定范围变量共享
在一个 shell 会话中使用export设置了一个环境变量,并且这个环境变量被写入了启动文件(如.bashrc、.profile等),那么在下次打开新的 shell 会话时,这个环境变量可能会被重新加载,从而在一定程度上实现了变量在不同 shell 会话之间的共享。
例如,如果在.bashrc文件中添加了export SOME_VAR=“Some value”,那么每次打开一个新的 bash shell 会话时,SOME_VAR这个环境变量都会被设置
# parent.sh
VAR_IN_PARENT="Value in parent"
export VAR_IN_PARENT
./child.sh
# child.sh
echo "Value from parent: $VAR_IN_PARENT"
相关文章:
linux中bashrc和profile环境变量在Shell编程变量的传递作用
在 Linux 系统中,.bashrc文件和.profile文件都是用于配置用户环境的重要文件,它们之间有以下关联: 一、作用相似性 环境设置:两者都用于设置用户的环境变量和启动应用程序的配置。例如,它们可以定义路径变量…...

数据结构-4.2.串的定义和基本操作
一.串的定义: 1.单/双引号不是字符串里的内容,他只是一个边界符,用来表示字符串的头和尾; 2.空串也是字符串的子串,空串长度为0; 3.字符的编号是从1开始,不是0; 4.空格也是字符&a…...

fastzdp_redis第一次开发, 2024年9月26日, Python操作Redis零基础快速入门
提供完整录播课 安装 pip install fastzdp_redisPython连接Redis import redis# 建立链接 r redis.Redis(hostlocalhost, port6379, db0)# 设置key r.set(foo, bar)# 获取key的值 print(r.get(foo))RESP3 支持 简单的理解: 支持更丰富的数据类型 参考文档: https://blog.c…...

文件名:\\?\C:\Windows\system32\inetsrv\config\applicationHost.config错误:无法写入配置文件
文件名: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 错误:无法写入配置文件 解决办法: 到C:\inetpub\history中找到最近一次的【CFGHISTORY_00000000XX】文件,点击进去找到applicationHost.config文件,用其覆盖C:\Win…...

Optiver股票大赛Top2开源!
Optiver股票大赛Top2开源! ↑↑↑关注后"星标"kaggle竞赛宝典 作者:杰少 Optiver第二名方案解读 简介 Optiver竞赛已经于今天结束了,竞赛也出现了极端情况,中间断崖式的情况,在Kaggle过往的竞赛中&#…...
Maven 实现依赖统一管理
Maven 实现依赖统一管理主要是通过两个关键机制:pom.xml 文件中的 <dependencies> 节点用于声明项目依赖,以及通过继承(Inheritance)和聚合(Aggregation)功能来统一管理和组织这些依赖。此外…...

【最新】微信小程序连接onenet——stm32+esp8266+onenet实现查看温湿度,控制单片机
微信小程序——stm32esp8266onenet实现查看温湿度,控制单片机 (最新已验证)stm32 新版 onenet dht11esp8266/01s mqtt物联网上报温湿度和控制单片机(保姆级教程) :↓↓👇 👇 👇 👇…...

差分(续前缀和)(含一维二维)
题目引入 开发商小 Q 买下了一条街,他想在这条街的一边盖房子。 街道可以抽象为一条数轴,而小 Q 只会在坐标在 1~n 的范围内盖房子。 首先,小 Q 将街上坐标在 1∼ 𝑛1∼ n 范围内的物体全部铲平。也就是说,在正式动工盖…...

【STM32-HAL库】自发电型风速传感器(使用STM32F407ZGT6)(附带工程下载链接)
一、自发电型风速传感器介绍 自发电型风速传感器,也称为风力发电型风速传感器或无源风速传感器,是一种不需要外部电源即可工作的风速测量设备。这种传感器通常利用风力来驱动内部的发电机构,从而产生电能来供电测量风速的传感器部分。以下是自…...
【计算机毕业设计】springboot就业信息管理系统
就业信息管理系统 摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,就业信息管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时…...

实用工具推荐---- PDF 转换
直接上链接:爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下: 全免费!!!!...

安宝特案例 | 某知名日系汽车制造厂,借助AR实现智慧化转型
案例介绍 在全球制造业加速数字化的背景下,工厂的生产管理与设备维护效率愈发重要。 某知名日系汽车制造厂当前面临着设备的实时监控、故障维护,以及跨地域的管理协作等挑战,由于场地分散和突发状况的不可预知性,传统方式已无法…...

RabbitMQ基本原理
一、基本结构 所有中间件技术都是基于 TCP/IP 协议基础之上进行构建新的协议规范,RabbitMQ遵循的是AMQP协议(Advanced Message Queuing Protocol - 高级消息队列协议)。 生产者发送消息流程: 1、生产者和Broker建立TCP连接&#…...
【NodeJS】npm、yarn、pnpm当前项目设置国内镜像源
全局设置镜像源,可以参考下这篇文章,还挺详细:《npm、yarn、pnpm 最新国内镜像源设置和常见问题解决》 临时设置镜像源:《npm永久或临时切换源》 有时候可能要同时多个开发项目,又不想修改全局的镜像源(具体场景…自行…...

25考研咨询周开启,西安电子科技大学是否改考408??
学长这几天帮大家问了西安电子科技大学是否会从833、834、953改考为408? 西电老师回复:根据上级文件要求,招生简章以及专业目录会在网上报名开始前公布,专业课不会又大变动! 因为大家安心复习即可,保证今…...
git(1) -- 环境配置
1. 配置文件 编辑~/.gitconfig文件,内容如下。 [user]email xflming163.comname xflm [core]editor vim [color]diff autostatus autobranch autoui true [commit]template /home/xflm/configuser/git-commit.template [diff]tool bc4 [difftool]prompt …...

Windows安装Vim,并在PowerShell中直接使用vim
大家好啊,我是豆小匠。 这期介绍下怎么在windows的PowerShell上使用vim,方便在命令行里修改配置文件等。 先上效果图: 1、下载Vim GitHub传送门:https://github.com/vim/vim-win32-installer/releases 选择win-64的版本下载即可&…...

力扣(leetcode)每日一题 983 最低票价 |动态规划
983. 最低票价 题干 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有 三种不同的销售方式 : 一张 为期一天 的通…...

【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞
漏洞描述 java后端,非常完整的一套交易所,UI前端做的也很漂亮,新增了交易跟单功能,前端pc+wap都是uniapp纯源码,前端源码node_modules环境已经安装好了,拿去直接编译就可以. 后端 前端 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共…...

基于SpringBoot+Vue+MySQL的个性化电影推荐
系统展示 用户前台界面 管理员后台界面 系统背景 随着在线影视平台的迅猛发展,用户对个性化电影推荐的需求日益增长。传统的电影推荐系统往往基于简单的热门排行或分类筛选,难以满足用户的个性化需求。因此,开发一个基于SpringBootVueMySQL的…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...

Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...