【Linux系列】bash_profile 与 zshrc 的编辑与加载
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- kwan 的解忧杂货铺:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
- 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 理解 shell 配置文件
- .bash_profile 详解
- .zshrc 详解
- 配置文件加载顺序
- 实际应用中的最佳实践
- 常见问题与解决方案
- 现代化配置管理工具
在 Unix/Linux 系统和 macOS 中,终端配置文件是开发者日常工作中不可或缺的一部分。.bash_profile
和.zshrc
这两个文件尤其重要,它们分别用于 Bash 和 Zsh 这两种流行的 shell 环境。
理解 shell 配置文件
Shell 配置文件是包含一系列命令的文本文件,当用户启动终端或登录系统时,这些命令会被自动执行。它们的主要作用是定制用户的 shell 环境,包括设置环境变量、定义别名、配置路径以及自定义各种 shell 行为。
.bash_profile
是 Bash shell 的用户级配置文件,而.zshrc
则是 Zsh shell 的运行时配置文件。随着 macOS Catalina 及以后版本将默认 shell 从 Bash 改为 Zsh,理解这两个文件的区别和用法变得尤为重要。
vim ~/.bash_profile
source ~/.bash_profilevim ~/.zshrc
source ~/.zshrc
.bash_profile 详解
.bash_profile
是 Bash shell 的登录配置文件,它会在用户登录系统时执行一次。这个文件通常位于用户的主目录下(~/.bash_profile
)。其主要用途包括:
- 设置环境变量:如
PATH
、JAVA_HOME
等开发环境必需的变量 - 定义别名(alias):简化常用命令的输入
- 配置提示符(PS1):自定义终端提示符的显示样式
- 启动应用程序:如启动 ssh-agent 等后台服务
编辑.bash_profile
的命令是vim ~/.bash_profile
,使用 Vim 文本编辑器打开该文件进行修改。Vim 是一款功能强大的文本编辑器,虽然学习曲线较陡峭,但掌握后能极大提高编辑效率。
修改完成后,为了使更改立即生效而不需要重新登录,可以使用source ~/.bash_profile
命令。source
命令会读取并执行文件中的命令,相当于重新加载配置文件。
.zshrc 详解
随着 Zsh 的普及,特别是 Oh My Zsh 等框架的出现,.zshrc
文件变得越来越重要。与.bash_profile
不同,.zshrc
会在每次启动新的 Zsh 会话时都被加载,而不仅仅是登录时。
.zshrc
的主要功能包括:
- 设置 Zsh 特有选项:如自动补全、历史命令等
- 加载插件:对于使用 Oh My Zsh 的用户,可以在这里启用各种插件
- 定义主题:配置终端的外观和显示风格
- 自定义函数:编写复杂的 shell 函数提高工作效率
编辑.zshrc
同样使用 Vim:vim ~/.zshrc
,修改后使用source ~/.zshrc
命令重新加载配置。值得注意的是,Zsh 环境下,.zprofile
类似于.bash_profile
,是登录时执行的配置文件,而.zshrc
则是交互式 shell 的配置文件。
配置文件加载顺序
理解这些配置文件的加载顺序对于正确设置环境至关重要:
对于 Bash:
/etc/profile
:系统全局配置文件~/.bash_profile
或~/.bash_login
或~/.profile
(按此顺序查找第一个存在的文件)~/.bashrc
:非登录交互式 shell 使用的配置文件
对于 Zsh:
/etc/zshenv
~/.zshenv
/etc/zprofile
~/.zprofile
/etc/zshrc
~/.zshrc
/etc/zlogin
~/.zlogin
这种复杂的加载顺序意味着后面的配置可能会覆盖前面的设置,因此在配置时需要特别注意。
实际应用中的最佳实践
在实际开发中,合理管理这些配置文件可以提高工作效率:
- 环境变量管理:将开发所需的环境变量集中管理,可以考虑使用
export
命令在配置文件中设置 - 跨 shell 兼容性:如果同时使用 Bash 和 Zsh,可以将通用配置放在
.profile
中,然后在各自的配置文件中 source 它 - 版本控制:将配置文件纳入版本控制(如 Git),方便在不同机器间同步配置
- 模块化管理:将不同功能的配置拆分到不同文件,然后在主配置文件中引入,保持结构清晰
例如,可以创建一个~/.dotfiles
目录,将所有配置文件放在其中,然后通过符号链接将它们链接到正确的位置。这种方法便于备份和迁移配置。
常见问题与解决方案
在编辑和加载配置文件时,常会遇到一些问题:
- 修改不生效:确保使用了正确的
source
命令重新加载配置,或者确认修改的文件确实是当前 shell 使用的配置文件 - 冲突问题:当环境变量在多处设置时,可能会产生冲突,可以使用
echo $VAR
检查最终生效的值 - 性能问题:过多的插件或复杂的配置会导致 shell 启动变慢,可以按需加载或使用延迟加载技术
- 兼容性问题:某些设置在 Bash 和 Zsh 中语法不同,需要特别注意
对于这些问题,可以通过添加调试输出(如echo "Loading .zshrc"
)来跟踪配置文件的加载过程,帮助定位问题。
现代化配置管理工具
随着配置复杂度的增加,出现了许多管理 shell 配置的工具:
- Oh My Zsh:最流行的 Zsh 配置框架,提供了丰富的主题和插件
- Prezto:另一个 Zsh 配置框架,比 Oh My Zsh 更轻量
- Fisher:Fish shell 的插件管理器
- Starship:跨 shell 的轻量级提示符定制工具
这些工具可以大大简化配置管理,但也要注意不要过度依赖它们,保持对底层配置的理解。
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
相关文章:
【Linux系列】bash_profile 与 zshrc 的编辑与加载
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【大模型】解决最新的Dify1.3.1版本 无法基于Ollama成功添加模型
本地搭建参考链接,但是版本不是最新的1.3.1 DeepSeek Dify :零成本搭建企业级本地私有化知识库保姆级教程 windows环境下部署。 查看模型添加,提示成功,但实际模型接口返回值为空,即看不到已添加的模型。 解决方法…...
6.空气质量检测和语音播报
目录 传感器 传感器分类 数字量传感器 模拟量传感器 电压型模拟量传感器 电流型模拟量传感器 接收不同数字电平信号 KQM6600 简介 获取数据手册 关注手册的内容 KQM660硬件层 编辑 KQM协议层 语音识别和语音播报模块 SU03T作用 SU03T简介编辑 SU03T硬件层 …...
LeetCode 热题 100 543. 二叉树的直径
LeetCode 热题 100 | 543. 二叉树的直径 大家好,今天我们来解决一道经典的二叉树问题——二叉树的直径。这道题在 LeetCode 上被标记为简单难度,要求计算给定二叉树的直径。 问题描述 给你一棵二叉树的根节点,返回该树的直径。二叉树的直径…...
D. Explorer Space(dfs+剪枝)
Problem - 1517D - Codeforces 题目大意:给你一个n行m列的矩阵,以及每个点上下左右相邻点的边权,求出每个点任意走k步后再回到当前这个点的最小路程,如果不能回到起始点则输出-1 思路:既然走k步后要回到起始点&#…...
# KVstorageBaseRaft-cpp 项目 RPC 模块源码学习
KVstorageBaseRaft-cpp 项目 RPC 模块源码学习 。 一、项目简介 KVstorageBaseRaft-cpp 是一个基于 Raft 一致性算法实现的分布式 KV 存储系统,采用 C 开发。项目的核心目标是帮助开发者理解 Raft 原理和分布式 KV 存储的基本实现。RPC 模块是分布式系统通信的关…...
QT6 源(93)篇三:阅读与注释共用体类 QVariant 及其源代码,本类支持比较运算符 ==、!=。
(9) 本类支持比较运算符 、! : 可见, QString 类型里可存储多个 unicode 字符,即使只存储一个 unicode 字符也不等于 QChar。 (10)本源代码来自于头文件 qvariant . h : #ifndef Q…...
Qt开发经验 --- 避坑指南(13)
文章目录 [toc]1 安装Qt creator后无法使用debug调试2 安装VS后之间安装自带的Windows SDK3 Qt配置ssl4 ubuntu编译linuxdeployqt 更多精彩内容👉内容导航 👈👉Qt开发经验 👈 1 安装Qt creator后无法使用debug调试 安装最新版本Q…...
go 通过汇编学习atomic原子操作原理
文章目录 概要一、原理1.1、案例1.2、关键汇编 二、LOCK汇编指令2.1、 LOCK2.2、 原理2.2.1、 缓存行2.2.2、 缓存一致性之MESI协议2.2.3、lock原理 三、x86缓存发展四、x86 DMA发展参考 概要 在并发操作下,对一个简单的aa2的操作都会出错,这是因为这样…...
LOJ 6346 线段树:关于时间 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),另有一个存储三元组的列表 L L L. 有 m m m 个操作分两种: add ( l , r , k ) \operatorname{add}(l,r,k) add(l,r,k):将 ( l , r , …...
Python----神经网络(基于Alex Net的花卉分类项目)
一、基于Alex Net的花卉分类 1.1、项目背景 在当今快速发展的科技领域,计算机视觉已成为一个备受关注的研究方向。随着深度学习技术的不断进步,图像识别技术得到了显著提升,广泛应用于医疗、安防、自动驾驶等多个领域。其中,花卉…...
影刀RPA开发-魔法指令-玩转图片识别
聊聊天,就能生成指令! 1. 影刀RPA提取图片内容的方式 官方AI识别 集成的第三方识别指令 免费的识别指令 使用python自己编写识别代码,自己安装第三方库 import easyocr# 创建一个 EasyOCR 识别器,指定同时识别中文(简…...
从零开始开发纯血鸿蒙应用之XML解析
从零开始开发纯血鸿蒙应用 〇、前言一、鸿蒙SDK中的 XML API1、ohos.xml2、ohos.convertxml 三、XML 解析实践1、源数据结构2、定义映射关系3、定义接收对象4、获取文章信息 四、总结 〇、前言 在前后端的数据传输方面,论格式化形式,JSON格式自然是首选…...
运算放大器稳定性分析
我们常见的运放电路大多是在闭环状态。那么就必然遵循闭环控制系统的基本原理。闭环控制系统的核心是通过反馈来调节系统的输出,使其更接近期望值。 本文从闭环控制系统的角度,画出同相、反相差分电路的经典控制框图。有了控制框图就可以利用经典控制理论…...
python【扩展库】websockets
文章目录 介绍基础教程安装websockets接收与发送消息介绍 websockets基于python构建websocket服务、客户端的扩展库;官方文档;优点是正确性(严格测试,100%分支覆盖)、简单性(自管理连接)、健壮性、高性能(C扩展加速内存操作),双向通信;基于(python标准异步io框架)…...
leetcode 454. 4Sum II
题目描述 代码: class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int,int> table;int temp 0;for(auto n1:nums1){fo…...
MCP 传输层代码分析
MCP 传输层代码分析 MCP 整体架构说明 引用官方文档原文:Model Context Protocol (MCP) 构建在一个灵活且可扩展的架构上,使 LLM 应用和集成之间的无缝通信成为可能。具体架构细节可以参考文档(核心架构 - MCP 中文文档)。MCP 采…...
OBS studio 减少音频中的杂音(噪音)
1. 在混音器中关闭除 麦克风 之外的所有的音频输入设备 2.在滤镜中增加“噪声抑制”和“噪声门限”...
java的Stream流处理
Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象,它允许你以声明式方式处理数据集合(类似于 SQL 语句),支持并行操作,提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…...
Windows使用虚拟环境执行sh脚本
在代码文件夹git bash here echo ‘export PATH“/f/anaconda/Scripts:$PATH”’ >> ~/.bashrc echo ‘source /f/anaconda/etc/profile.d/conda.sh’ >> ~/.bashrc source ~/.bashrc conda路径确认 where conda conda activate mmt bash ./online.sh感谢gpt记录…...
Transformer Decoder-Only 算力FLOPs估计
FLOPs和FLOPS的区别 FLOPs (Floating Point Operations)是指模型或算法执行过程中总的浮点运算次数,单位是“次”FLOPS (Floating Point Operations Per Second)是指硬件设备(如 GPU 或 CPU)每…...
数字电子技术基础(五十七)——边沿触发器
目录 1 边沿触发器 1.1 边沿触发器简介 1.1.1 边沿触发器的电路结构 1.3 边沿触发的D触发器和JK触发器 1.3.1 边沿触发的D型触发器 1.3.2 边沿触发的JK触发器 1 边沿触发器 1.1 边沿触发器简介 对于时钟触发的触发器来说,始终都存在空翻的现象,抗…...
05.three官方示例+编辑器+AI快速学习three.js webgl - animation - skinning - ik
本实例主要讲解内容 这个Three.js示例展示了**反向运动学(Inverse Kinematics, IK)**在3D角色动画中的应用。通过加载一个角色模型,演示了如何使用IK技术实现自然的肢体运动控制,如手部抓取物体的动作。 核心技术包括: CCD反向运动学求解器…...
MYSQL数据库集群高可用和数据监控平台
项目环境 项目拓扑结构 软硬件环境清单 软硬件环境清单 软硬件环境清单 主机名IP硬件软件 master1 192.168.12.130 VIP:192.168.12.200 cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT VmWare17 OpenEuler22.03 SP4 MySql8.0.3…...
《异常链机制详解:如何优雅地传递Java中的错误信息?》
大家好呀!👋 作为一名Java开发者,相信你一定见过各种奇奇怪怪的异常报错。但有没有遇到过这样的情况:明明只调用了一个方法,却看到异常信息像俄罗斯套娃一样一层层展开?🤔 这就是我们今天要讲的…...
MySQL 数据库集群部署、性能优化及高可用架构设计
MySQL 数据库集群部署、性能优化及高可用架构设计 集群部署方案 1. 主从复制架构 传统主从复制:配置一个主库(Master)和多个从库(Slave)GTID复制:基于全局事务标识符的复制,简化故障转移半同步复制:确保至少一个从库接收到数据…...
什么是深度神经网络
深度神经网络(DNN)详细介绍 1. 定义与核心原理 深度神经网络(Deep Neural Network, DNN)是一种具有多个隐藏层的人工神经网络模型,其核心在于通过层次化的非线性变换逐步提取输入数据的高层次抽象特征。与浅层神经网络相比,DNN的隐藏层数量通常超过三层,例如VGGNet、R…...
深入解析PyTorch中MultiheadAttention的隐藏参数add_bias_kv与add_zero_attn
关键背景 最近在学习pytorch中的源码尤其是nn.modules下算子的实现,针对activation.py下MultiheadAttention下有两个不常见的参数的使用比较有趣,因为时序领域很少使用这两个参数(add_bias_kv和add_zero_attn),但是其…...
最大化效率和性能:AKS 中节点池的强大功能
什么是节点池 在 Azure Kubernetes 服务 (AKS) 中,相同配置的节点会被分组到节点池中。这些节点池包含运行应用程序的底层虚拟机。创建 AKS 集群时,您需要定义初始节点数及其大小 (SKU)。随着应用程序需求的变化,您可能需要更改节点池的设置…...
用户态到内核态:Linux信号传递的九重门(一)
1. 信号的认识 1.1. 信号的特点 异步通知:信号是异步的,发送信号的进程无需等待接收进程的响应。预定义事件:每个信号对应一个预定义的事件(如终止、中断、段错误等)。 轻量级:信号不携带大量数据…...
c语言第一个小游戏:贪吃蛇小游戏01
hello啊大家好 今天我们用一个小游戏来增强我们的c语言! 那就是贪吃蛇 为什么要做一个贪吃蛇小游戏呢? 因为这个小游戏所涉及到的知识有c语言的指针、数组、链表、函数等等可以让我们通过这个游戏来巩固c语言,进一步认识c语言。 一.我们先…...
JAVA EE_网络原理_网络层
晨雾散尽,花影清晰。 ----------陳長生. ❀主页:陳長生.-CSDN博客❀ 📕上一篇:数据库Mysql_联…...
前端性能指标及优化策略——从加载、渲染和交互阶段分别解读详解并以Webpack+Vue项目为例进行解读
按照加载阶段、渲染阶段和交互阶段三个维度进行系统性阐述: 在现代 Web 开发中,性能不再是锦上添花,而是决定用户体验与业务成败的关键因素。为了全面监控与优化网页性能,我们可以将性能指标划分为加载阶段、渲染阶段、和交互阶段…...
Flink 系列之十五 - 高级概念 - 窗口
之前做过数据平台,对于实时数据采集,使用了Flink。现在想想,在数据开发平台中,Flink的身影几乎无处不在,由于之前是边用边学,总体有点混乱,借此空隙,整理一下Flink的内容,…...
控制台打印带格式内容
1. 场景 很多软件会在控制台打印带颜色和格式的文字,需要使用转义符实现这个功能。 2. 详细说明 2.1.转义符说明 样式开始:\033[参数1;参数2;参数3m 可以多个参数叠加,若同一类型的参数(如字体颜色)设置了多个&…...
Linux为啥会重新设置中断请求号与中断向量号之间的关系?
Linux内核重新设置中断请求号(IRQ)与中断向量号之间的关系,主要出于以下核心原因和设计考量: 1. 硬件多样性与抽象需求 硬件中断号(HW Interrupt ID)的差异 不同处理器架构的中断控制器(…...
自然语言处理NLP中的连续词袋(Continuous bag of words,CBOW)方法、优势、作用和程序举例
自然语言处理NLP中的连续词袋(Continuous bag of words,CBOW)方法、优势、作用和程序举例 目录 自然语言处理NLP中的连续词袋(Continuous bag of words,CBOW)方法、优势、作用和程序举例一、连续词袋( Cont…...
计算机网络笔记(二十二)——4.4网际控制报文协议ICMP
4.4.1ICMP报文的种类 ICMP(Internet Control Message Protocol)是IP协议的辅助协议,主要用于传递控制消息、错误报告和诊断信息。其报文分为两大类:查询报文和错误报告报文。 1. 错误报告报文(Error Messages&#x…...
【AI论文】作为评判者的感知代理:评估大型语言模型中的高阶社会认知
摘要:评估大型语言模型(LLM)对人类的理解程度,而不仅仅是文本,仍然是一个开放的挑战。 为了弥合这一差距,我们引入了Sentient Agent作为评判者(SAGE),这是一个自动评估框…...
Kubernetes生产实战(二十七):精准追踪Pod数据存储位置
在生产环境中,快速定位Pod数据的物理存储位置是运维人员的基本功。本文将揭秘Kubernetes存储系统的核心原理,并提供一套经过实战检验的定位方法体系。 一、存储架构全景图 K8S存储架构 Pod --> Volume Mount --> PVC --> PV --> Storage P…...
极新携手火山引擎,共探AI时代生态共建的破局点与增长引擎
在生成式AI与行业大模型的双重驱动下,人工智能正以前所未有的速度重构互联网产业生态。从内容创作、用户交互到商业决策,AI技术渗透至产品研发、运营的全链条,推动效率跃升与创新模式变革。然而,面对AI技术迭代的爆发期࿰…...
[SIGPIPE 错误] 一个 Linux socket 程序,没有任何报错打印直接退出程序
1. 问题 在编写一个程序的时候,当然程序很复杂,遇到了一个 Linux socket 程序,没有任何报错打印直接退出程序,但是在程序里面我有很多 error log ,在程序退出的时候完全没有打印。为了说明问题,我编写了一…...
Qt 界面优化(绘图)
目录 1. 绘图基本概念2. 绘制各种形状2.1 绘制线段2.2 绘制矩形2.3 绘制圆形2.4 绘制文本2.5 设置画笔2.6 设置画刷 3. 绘制图片3.1 绘制简单图片3.2 平移图片3.3 缩放图片3.4 旋转图片 4. 其他设置4.1 移动画家位置4.2 保存/加载画家的状态 5. 特殊的绘图设备5.1 QPixmap5.2 Q…...
AQS(AbstractQueuedSynchronizer)解析
文章目录 一、AQS简介二、核心设计思想2.1 核心设计思想回顾2.2 CLH锁队列简介2.3 AQS对CLH队列的改动及其原因 三、核心组件详解3.1 state 状态变量3.2 同步队列 (FIFO双向链表) 四、核心方法深度解析4.1 获取同步状态 (独占模式) - acquire(int arg)4.2 释放同步状态 (独占模…...
Java并发编程常见问题与陷阱解析
引言 随着计算机硬件技术的飞速发展,多核处理器已经变得普遍,Java并发编程的重要性也日益凸显。然而,多线程编程并非易事,其中充满了许多潜在的问题和陷阱。作为一名Java开发工程师,掌握并发编程的常见问题及其解决方案…...
DEEPPOLAR:通过深度学习发明非线性大核极坐标码(1)
原文:《DEEPPOLAR: Inventing Nonlinear Large-Kernel Polar Codes via Deep Learning》 摘要 信道编码设计的进步是由人类的创造力推动的,而且恰如其分地说,这种进步是零星的。极性码是在Arikan极化核的基础上开发的,代表了编码…...
Java多态详解
Java多态详解 什么是多态? 比如我们说:“驾驶一辆车”,有人开的是自行车,有人开的是摩托车,有人开的是汽车。虽然我们都说“开车”,但“怎么开”是由具体的车类型决定的:“开”是统一的动作&a…...
go程序编译成动态库,使用c进行调用
以下是使用 Go 语言打包成 .so 库并使用 C 语言调用的完整步骤: 1. Go 语言打包成 .so 库 (1)编写 Go 代码 创建一个 Go 文件(如 calculator.go),并定义需要导出的函数。导出的函数名必须以大写字母开头…...
iVX:图形化编程与组件化的强强联合
在数字化浪潮中,软件开发范式正经历着从文本到图形的革命性转变。iVX 作为国产可视化编程领域的领军者,以 “图形化逻辑 组件化架构” 的双重创新,重新定义了软件开发的效率边界。其技术突破不仅体现在开发方式的革新,更通过一系…...
华为配置篇-RSTP/MSTP实验
MSTP 一、简介二、常用命令总结三、实验 一、简介 RSTP(快速生成树协议) RSTP(Rapid Spanning Tree Protocol)是 STP 的改进版本,基于 IEEE 802.1w 标准,核心目标是解决传统 STP 收敛速度慢的问…...