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

linux中bashrc和profile环境变量在Shell编程变量的传递作用

在 Linux 系统中,.bashrc文件和.profile文件都是用于配置用户环境的重要文件,它们之间有以下关联:

一、作用相似性

  1. 环境设置:两者都用于设置用户的环境变量和启动应用程序的配置。例如,它们可以定义路径变量(PATH)、设置别名、定义特定于用户的函数等。这些设置可以使命令行操作更加高效和便捷。
  2. 个性化配置:用户可以根据自己的需求在这两个文件中进行个性化的配置,以适应不同的工作环境和习惯。比如,可以设置特定的编辑器、添加自定义的命令别名等。

二、加载顺序与交互

  1. 加载时机:

    • .profile文件通常在用户登录时被读取。当用户登录到系统时,系统会首先加载这个文件来设置一些基本的环境变量和执行一些初始化任务。
    • .bashrc文件则在每次启动新的 Bash shell 时被读取。这包括用户打开一个新的终端窗口或在当前终端中启动一个新的 Bash 子进程。
  2. 交互关系:

    • 在 Bash 中,当用户登录时,系统会先加载.profile文件。如果.profile文件中包含了对.bashrc文件的引用(例如通过source ~/.bashrc命令),那么在登录过程中也会加载.bashrc文件。这样可以确保在登录时和后续的 Bash 会话中都能应用.bashrc中的配置。
    • 另一方面,如果用户只是打开一个新的终端窗口而不是进行完整的登录过程,那么只有.bashrc文件会被加载。

三、使用场景的互补

  1. .profile更适合用于系统级的、与登录相关的配置。例如,可以在这个文件中设置一些全局的环境变量,如JAVA_HOMEPATH等,这些变量可能需要在用户登录到系统后立即生效,并且在不同的 shell 中都能使用。
  2. .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文件都是用于配置用户环境的重要文件,它们之间有以下关联: 一、作用相似性 环境设置:两者都用于设置用户的环境变量和启动应用程序的配置。例如,它们可以定义路径变量&#xf…...

数据结构-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 实现依赖统一管理主要是通过两个关键机制&#xff1a;pom.xml 文件中的 <dependencies> 节点用于声明项目依赖&#xff0c;以及通过继承&#xff08;Inheritance&#xff09;和聚合&#xff08;Aggregation&#xff09;功能来统一管理和组织这些依赖。此外&#xf…...

【最新】微信小程序连接onenet——stm32+esp8266+onenet实现查看温湿度,控制单片机

微信小程序——stm32esp8266onenet实现查看温湿度&#xff0c;控制单片机 &#xff08;最新已验证&#xff09;stm32 新版 onenet dht11esp8266/01s mqtt物联网上报温湿度和控制单片机(保姆级教程) &#xff1a;↓↓&#x1f447; &#x1f447; &#x1f447; &#x1f447…...

差分(续前缀和)(含一维二维)

题目引入 开发商小 Q 买下了一条街&#xff0c;他想在这条街的一边盖房子。 街道可以抽象为一条数轴&#xff0c;而小 Q 只会在坐标在 1~n 的范围内盖房子。 首先&#xff0c;小 Q 将街上坐标在 1∼ &#x1d45b;1∼ n 范围内的物体全部铲平。也就是说&#xff0c;在正式动工盖…...

【STM32-HAL库】自发电型风速传感器(使用STM32F407ZGT6)(附带工程下载链接)

一、自发电型风速传感器介绍 自发电型风速传感器&#xff0c;也称为风力发电型风速传感器或无源风速传感器&#xff0c;是一种不需要外部电源即可工作的风速测量设备。这种传感器通常利用风力来驱动内部的发电机构&#xff0c;从而产生电能来供电测量风速的传感器部分。以下是自…...

【计算机毕业设计】springboot就业信息管理系统

就业信息管理系统 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;就业信息管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时…...

实用工具推荐---- PDF 转换

直接上链接&#xff1a;爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下&#xff1a; 全免费&#xff01;&#xff01;&#xff01;&#xff01;...

安宝特案例 | 某知名日系汽车制造厂,借助AR实现智慧化转型

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

RabbitMQ基本原理

一、基本结构 所有中间件技术都是基于 TCP/IP 协议基础之上进行构建新的协议规范&#xff0c;RabbitMQ遵循的是AMQP协议&#xff08;Advanced Message Queuing Protocol - 高级消息队列协议&#xff09;。 生产者发送消息流程&#xff1a; 1、生产者和Broker建立TCP连接&#…...

【NodeJS】npm、yarn、pnpm当前项目设置国内镜像源

全局设置镜像源&#xff0c;可以参考下这篇文章&#xff0c;还挺详细&#xff1a;《npm、yarn、pnpm 最新国内镜像源设置和常见问题解决》 临时设置镜像源&#xff1a;《npm永久或临时切换源》 有时候可能要同时多个开发项目&#xff0c;又不想修改全局的镜像源(具体场景…自行…...

25考研咨询周开启,西安电子科技大学是否改考408??

学长这几天帮大家问了西安电子科技大学是否会从833、834、953改考为408&#xff1f; 西电老师回复&#xff1a;根据上级文件要求&#xff0c;招生简章以及专业目录会在网上报名开始前公布&#xff0c;专业课不会又大变动&#xff01; 因为大家安心复习即可&#xff0c;保证今…...

git(1) -- 环境配置

1. 配置文件 编辑~/.gitconfig文件&#xff0c;内容如下。 [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

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

力扣(leetcode)每日一题 983 最低票价 |动态规划

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

【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞

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

基于SpringBoot+Vue+MySQL的个性化电影推荐

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

ASP.NET MVC-异步发送post请求+文件下载

环境&#xff1a; win10, .NET 6.0 前端向后台传递string型变量 前端&#xff1a; function PasteSubmit() {// 获取某个input的值var inName document.getElementById("xx").value;// 获取某个元素的属性值var inSeq document.getElementById("xxx").g…...

Unity 2D RPG Kit 学习笔记

学习资料&#xff1a; B站教学视频&#xff1a;https://www.bilibili.com/video/BV1dC4y1o7A5?p1&vd_source707ec8983cc32e6e065d5496a7f79ee6 2D RPG Kit Documentation.pdf文档 1、2D RPG Kit Documentation文档 1.1、Scenes/TitleScreen 开始菜单工程 1.2、https://it…...

联想天逸100使用笔记

文章目录 配置整理过程锁定功能键怎么弄? 翻出好多年不用的老电脑&#xff0c;饱受折磨&#xff0c;做个笔记。 之前不是我在使用&#xff0c;本身配置就不高&#xff0c;还被装了各种流氓软件&#xff0c;卡的几乎动不了。 配置 老电脑配置不行&#xff1a; i3 5005U 4G内存…...

【AI知识点】嵌入向量(Embedding Vector)

嵌入向量&#xff08;Embedding Vector&#xff09;是通过嵌入函数&#xff08;Embedding Function&#xff09;将复杂、高维或稀疏数据&#xff08;如文本、图像、分类特征等&#xff09;映射到低维、稠密空间中表示的向量。这种向量表示保留了原始数据的语义或结构信息&#…...

github命令行管理工具推荐

GitHub 管理工具推荐 背景 在使用 GitHub 管理仓库时&#xff0c;需要在 Web 端创建远程仓库&#xff0c;在本地创建本地仓库&#xff0c;然后再用 git remote add origin url 进行关联。这个过程相对繁琐&#xff0c;而且还有优化的空间。如果频繁创建仓库&#xff0c;就更能…...

【React】react项目中的redux使用

1. store目录结构设计 2. react组件中使用store中的数据——useSelector 3. react组件中修改store中的数据——useDispatch 4. 示例 react-basic\src\store\moduels\counterStore.js import { createSlice } from reduxjs/toolkitconst counterStore createSlice({name: cou…...

AJAX JSON 实例

AJAX JSON 实例 引言 AJAX(Asynchronous JavaScript and XML)和JSON(JavaScript Object Notation)是现代Web开发中常用的技术。AJAX允许在不重新加载整个页面的情况下,与服务器交换数据和更新部分网页内容。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易…...

java8:hutool:httputil.post读取配置项中的url

如果HttpUtil.post是静态方法&#xff0c;无法直接访问非静态的Value注入的属性。有以下几种解决办法&#xff1a; 构造函数注入 1. 首先将配置项的值通过Value注入到类的成员变量&#xff0c;然后在构造函数中将这个值传递给一个静态变量。 import org.springframework.bean…...

Springboot结合RabbitMQ

pom.xml <!--AMQP依赖&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>application.yaml spring:rabbitmq:host: 127.0.0.1u…...

UNIAPP 动态菜单实现方法

1. 封装tabbar组件&#xff0c;组件UI使用uview的tabbar allList 定义出全部的菜单 list 定义当前用户能看到的菜单使用 u-tabbar 渲染出来 list 2. 权限判断处理 3. 使用方式 在 tab 页&#xff0c;底部放入该 tab 组件&#xff0c;并设置当前回显的页面&#xff0c;这里使用…...

广州网站制作托管/seo中文全称是什么

300W逆变电源资料 pcb&#xff0c;原理图 300W逆变电源资料 pcb&#xff0c;原理图 id658271275104&...

做网站无锡/成都网站优化平台

ComponentScan和SpringBootApplication使用后都会出现这个图标&#xff0c;而SpringBootApplication注解之所以会出现这个图标是因为在该注解内使用到了ComponentScan注解&#xff0c;表示进行了组件扫描。例如&#xff1a; 当在类上使用Controller、Service、Repository、Comp…...

字体设计转换器/seo上海优化

本次结对编程是为了完成四则运算生成器&#xff0c;&#xff0c;针对这次结对编程的题目 我们决定支持最多 10 个运算符的应用程序&#xff0c;支持括号的运算&#xff0c;可以判断题目的对错。 这次代码的难点在于不仅仅要保证题目不重复&#xff0c;还要完成多功能。 需求分…...

做淘宝用那些网站发货/如何在网上推广产品

程序员工作重要还是学习重要No, no, no, no, and no. And no.不&#xff0c;不&#xff0c;不&#xff0c;不&#xff0c;不。 和不。 A big NO. Clear as that.一个大号 那样清楚。 All you have to do is to bring those two letters together and say the word.您要做的就…...

网页游戏网站模压板/网络营销与直播电商怎么样

原文出处&#xff1a;http://www.blogjava.net/DLevin/archive/2011/06/23/352917.html 今天在Java中字节码的格式的时候&#xff0c;发现method_info中的access_flags中竟然定了ACC_BRIDGE的值。网上搜了一下&#xff0c;大概理解它的意思了&#xff0c;先记之。 首先是在什么…...

网站设计方案怎么做/整合营销案例举例说明

第五周任务 这周开始学习函数&#xff0c;这在任何一门语言中都是一个大头&#xff08;在Java中我们称为方法&#xff09;。 首先很重要的一点是&#xff0c;如果你像我一样习惯把自定义的函数放在main方法后面的话&#xff0c;那么一定要记得先声明函数。例如我现在定义了一个…...