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

【Linux系列】bash_profile 与 zshrc 的编辑与加载

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐: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)。其主要用途包括:

  1. 设置环境变量:如PATHJAVA_HOME等开发环境必需的变量
  2. 定义别名(alias):简化常用命令的输入
  3. 配置提示符(PS1):自定义终端提示符的显示样式
  4. 启动应用程序:如启动 ssh-agent 等后台服务

编辑.bash_profile的命令是vim ~/.bash_profile,使用 Vim 文本编辑器打开该文件进行修改。Vim 是一款功能强大的文本编辑器,虽然学习曲线较陡峭,但掌握后能极大提高编辑效率。

修改完成后,为了使更改立即生效而不需要重新登录,可以使用source ~/.bash_profile命令。source命令会读取并执行文件中的命令,相当于重新加载配置文件。
在这里插入图片描述

.zshrc 详解

随着 Zsh 的普及,特别是 Oh My Zsh 等框架的出现,.zshrc文件变得越来越重要。与.bash_profile不同,.zshrc会在每次启动新的 Zsh 会话时都被加载,而不仅仅是登录时。

.zshrc的主要功能包括:

  1. 设置 Zsh 特有选项:如自动补全、历史命令等
  2. 加载插件:对于使用 Oh My Zsh 的用户,可以在这里启用各种插件
  3. 定义主题:配置终端的外观和显示风格
  4. 自定义函数:编写复杂的 shell 函数提高工作效率

编辑.zshrc同样使用 Vim:vim ~/.zshrc,修改后使用source ~/.zshrc命令重新加载配置。值得注意的是,Zsh 环境下,.zprofile类似于.bash_profile,是登录时执行的配置文件,而.zshrc则是交互式 shell 的配置文件。

配置文件加载顺序

理解这些配置文件的加载顺序对于正确设置环境至关重要:

对于 Bash:

  1. /etc/profile:系统全局配置文件
  2. ~/.bash_profile~/.bash_login~/.profile(按此顺序查找第一个存在的文件)
  3. ~/.bashrc:非登录交互式 shell 使用的配置文件

对于 Zsh:

  1. /etc/zshenv
  2. ~/.zshenv
  3. /etc/zprofile
  4. ~/.zprofile
  5. /etc/zshrc
  6. ~/.zshrc
  7. /etc/zlogin
  8. ~/.zlogin

这种复杂的加载顺序意味着后面的配置可能会覆盖前面的设置,因此在配置时需要特别注意。

实际应用中的最佳实践

在实际开发中,合理管理这些配置文件可以提高工作效率:

  1. 环境变量管理:将开发所需的环境变量集中管理,可以考虑使用export命令在配置文件中设置
  2. 跨 shell 兼容性:如果同时使用 Bash 和 Zsh,可以将通用配置放在.profile中,然后在各自的配置文件中 source 它
  3. 版本控制:将配置文件纳入版本控制(如 Git),方便在不同机器间同步配置
  4. 模块化管理:将不同功能的配置拆分到不同文件,然后在主配置文件中引入,保持结构清晰

例如,可以创建一个~/.dotfiles目录,将所有配置文件放在其中,然后通过符号链接将它们链接到正确的位置。这种方法便于备份和迁移配置。

常见问题与解决方案

在编辑和加载配置文件时,常会遇到一些问题:

  1. 修改不生效:确保使用了正确的source命令重新加载配置,或者确认修改的文件确实是当前 shell 使用的配置文件
  2. 冲突问题:当环境变量在多处设置时,可能会产生冲突,可以使用echo $VAR检查最终生效的值
  3. 性能问题:过多的插件或复杂的配置会导致 shell 启动变慢,可以按需加载或使用延迟加载技术
  4. 兼容性问题:某些设置在 Bash 和 Zsh 中语法不同,需要特别注意

对于这些问题,可以通过添加调试输出(如echo "Loading .zshrc")来跟踪配置文件的加载过程,帮助定位问题。

现代化配置管理工具

随着配置复杂度的增加,出现了许多管理 shell 配置的工具:

  1. Oh My Zsh:最流行的 Zsh 配置框架,提供了丰富的主题和插件
  2. Prezto:另一个 Zsh 配置框架,比 Oh My Zsh 更轻量
  3. Fisher:Fish shell 的插件管理器
  4. Starship:跨 shell 的轻量级提示符定制工具

这些工具可以大大简化配置管理,但也要注意不要过度依赖它们,保持对底层配置的理解。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【Linux系列】bash_profile 与 zshrc 的编辑与加载

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Spring Boot中的拦截器!

每次用户请求到达Spring Boot服务端,你是否需要重复写日志、权限检查或请求格式化代码?这些繁琐的“前置后置”工作让人头疼!好在,Spring Boot拦截器如同一道智能关卡,统一处理请求的横切逻辑,让代码优雅又…...

基于 Spring Boot 瑞吉外卖系统开发(十五)

基于 Spring Boot 瑞吉外卖系统开发(十五) 前台用户登录 在登录页面输入验证码,单击“登录”按钮,页面会携带输入的手机号和验证码向“/user/login”发起请求。 定义UserMapper接口 Mapper public interface UserMapper exte…...

计算机网络笔记(二十三)——4.5IPv6

4.5.1IPv6的基本首部 IPv6 的基本首部相对于 IPv4 进行了重大简化和优化,固定长度为 40 字节,大幅提升了路由器的处理效率。以下是各字段的详细说明: IPv6 基本首部字段组成 字段名位数作用描述版本 (Version)4 bits固定值为 6&#xff0c…...

推荐一个Winform开源的UI工具包

从零学习构建一个完整的系统 推荐一个开源、免费的适合.NET WinForms 控件的套件。 项目简介 Krypton是一套开源的.Net组件,用于快速构建具有丰富UI交互的WinForms应用程序。 丰富的UI控件,提供了48个基础控件,如按钮、文本框、标签、下拉…...

位与运算

只有当除数是 2 的幂次方(如 2、4、8、16...)时,取模运算才可以转换为位运算。 int b 19;int a1 b % 16; // 传统取模运算int a2 b & 15; // 位运算替代取模printf("b %d\n", b);printf("b %% 8 %d\n",…...

算法备案如何判断自己的产品是否具备舆论属性

判断互联网产品是否具备舆论属性或社会动员能力,需要结合《具备舆论属性或社会动员能力的互联网信息服务安全评估规定》法规及实际功能、用户规模、信息传播方式等综合因素判定。 一、舆论属性判断标准 (1)服务功能与形式 信息交互功能&am…...

AR禁毒:科技赋能,筑牢防毒新防线

过去,传统禁毒宣传教育方式对普及禁毒知识、提高禁毒意识意义重大。但随着时代和社会环境变化,其困境逐渐显现。传统宣传方式单一,主要依靠讲座、发传单、办展览。讲座形式枯燥,对青少年吸引力不足;发传单易被丢弃&…...

趣味编程:四叶草

概述:在万千三叶草中寻觅,只为那一抹独特的四叶草之绿,它象征着幸运与希望。本篇博客主要介绍四叶草的绘制。 1. 效果展示 绘制四叶草的过程是一个动态的过程,因此博客中所展示的为绘制完成的四叶草。 2. 源码展示 #define _CR…...

访问者模式(Visitor Pattern)详解

文章目录 1. 访问者模式概述1.1 定义1.2 基本思想2. 访问者模式的结构3. 访问者模式的UML类图4. 访问者模式的工作原理5. Java实现示例5.1 基本实现示例5.2 访问者模式处理复杂对象层次结构5.3 访问者模式在文件系统中的应用6. 访问者模式的优缺点6.1 优点6.2 缺点7. 访问者模式…...

城市生命线综合管控系统解决方案-守护城市生命线安全

一、政策背景 国务院办公厅《城市安全风险综合监测预警平台建设指南》‌要求:将燃气、供水、排水、桥梁、热力、综合管廊等纳入城市生命线监测体系,建立"能监测、会预警、快处置"的智慧化防控机制。住建部‌《"十四五"全国城市基础…...

# 2-STM32F103-复位和时钟控制RCC

STM32-复位和时钟控制RCC 2-STM32-复位和时钟控制RCC摘要说明本文参考资料如下: 一、STM32最小系统回顾STM32F103C8T6核心板原理图 二、复位三、时钟3.1 时钟树3.2 STM32启动过程3.2 SystemInit()函数3.2.1 SystemInit()第1句:3.2.2 SystemInit()第2句&a…...

多模态大语言模型arxiv论文略读(七十五)

PosterLLaVa: Constructing a Unified Multi-modal Layout Generator with LLM ➡️ 论文标题:PosterLLaVa: Constructing a Unified Multi-modal Layout Generator with LLM ➡️ 论文作者:Tao Yang, Yingmin Luo, Zhongang Qi, Yang Wu, Ying Shan, C…...

Angular 知识框架

一、Angular 基础 1. Angular 简介 Angular 是什么? 基于 TypeScript 的前端框架(Google 维护)。 适用于构建单页应用(SPA)。 核心特性 组件化架构 双向数据绑定 依赖注入(DI) 模块化设计…...

企业数字化转型背景下的企业知识管理挑战与经验杂谈

一、引言 在数字化转型的浪潮下,企业知识管理正面临前所未有的挑战。随着数据量的急剧增长,企业内部积累的信息呈现出碎片化、分散化的趋势,传统的知识管理体系已难以有效应对这一变革。首先,信息碎片化问题日益严重,…...

使用frp实现客户端开机自启(含静默运行脚本)

本文整理了如何使用 frp 客户端并实现 Windows 系统下的开机静默自启,适合远程桌面、内网穿透等场景。 📁 目录结构 我将 frp 客户端文件放置在以下路径: F:\git\frp>tree /f 卷 其它 的文件夹 PATH 列表 卷序列号为 A123-0F4E F:. │ …...

list 容器常见用法及实现

文章目录 1. list 的介绍与使用1.1 list 的介绍1.2 list 的使用1.2.1 list 的构造1.2.2 list iterator 的使用1.2.3 list capacity1.2.4 list element access1.2.5 list modifiers1.2.6 迭代器失效问题 2. list 的模拟实现2.1 值得注意的点:2.2 std::initializer_li…...

iOS视频编码详细步骤(视频编码器,基于 VideoToolbox,支持硬件编码 H264/H265)

iOS视频编码详细步骤流程 1. 视频采集阶段 视频采集所使用的代码和之前的相同,所以不再过多进行赘述 初始化配置: 通过VideoCaptureConfig设置分辨率1920x1080、帧率30fps、像素格式kCVPixelFormatType_420YpCbCr8BiPlanarFullRange设置摄像头位置&am…...

浅析 Golang 内存管理

文章目录 浅析 Golang 内存管理栈(Stack)堆(Heap)堆 vs. 栈内存逃逸分析内存逃逸产生的原因避免内存逃逸的手段 内存泄露常见的内存泄露场景如何避免内存泄露?总结 浅析 Golang 内存管理 在 Golang 当中,堆…...

记录: Windows下远程Liunx 系统xrdp 用到的一些小问题(免费踩坑 记录)

采用liunx Ubuntu22.04版本以下,需要安装 xrdp 或者VNC 具体过程就是下载 在linux命令行里 首先更新软件包:sudo apt update 安装xrdp服务:sudo apt install xrdp 启动XRDP:sudo systemctl start xrdp(如果在启动的…...

C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?

本文的主要学习点,来自 这哥们的视频内容,感谢大神的无私奉献。你可以根据这哥们的视频内容学习,我这里只是将自己不明白的点,整理记录。 C 并发编程(1) 线程基础,为什么线程参数默认传参方式是值拷贝?_哔…...

【Python 算法零基础 2.模拟 ④ 基于矩阵】

目录 基于矩阵 Ⅰ、 2120. 执行所有后缀指令 思路与算法 ① 初始化结果列表 ② 方向映射 ③ 遍历每个起始位置 ④ 记录结果 Ⅱ、1252. 奇数值单元格的数目 思路与算法 ① 初始化矩阵 ② 处理每个操作 ③ 统计奇数元素 Ⅲ、 832. 翻转图像 思路与算法 ① 水平翻转图像 ② 像素值…...

【教程】Docker方式本地部署Overleaf

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 背景说明 下载仓库 初始化配置 修改监听IP和端口 自定义网站名称 修改数据存放位置 更换Docker源 更换Docker存储位置 启动Overleaf 创…...

3337|3335. 字符串转换后的长度 I(||)

1.字符串转换后的长度 I 1.1题目 3335. 字符串转换后的长度 I - 力扣(LeetCode) 1.2解析 递推法解析 思路框架 我们可以通过定义状态变量来追踪每次转换后各字符的数量变化。具体地,定义状态函数 f(i,c) 表示经过 i 次转换后&#xff0…...

PHP黑白胶卷底片图转彩图功能 V2025.05.15

关于底片转彩图 传统照片底片是摄影过程中生成的反色图像,为了欣赏照片,需要通过冲印过程将底片转化为正像。而随着数字技术的发展,我们现在可以使用数字工具不仅将底片转为正像,还可以添加色彩,重现照片原本的色彩效…...

字符串检索算法:KMP和Trie树

目录 1.引言 2.KMP算法 3.Trie树 3.1.简介 3.2.Trie树的应用场景 3.3.复杂度分析 3.4.Trie 树的优缺点 3.5.示例 1.引言 字符串匹配,给定一个主串 S 和一个模式串 P,判断 P 是否是 S 的子串,即找到 P 在 S 中第一次出现的位置。暴力匹…...

Java大师成长计划之第22天:Spring Cloud微服务架构

📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4o-mini模型辅助创作完成,旨在提供灵感参考与技术分享,文中关键数据、代码与结论建议通过官方渠道验证。 随着企业应用的不断扩展&#xff0c…...

瀑布模型VS敏捷模型VS喷泉模型

​目录 ​​1. 瀑布模型(Waterfall Model)​​ ​​2. 敏捷模型(Agile Model)​​ ​​3. 喷泉模型(Fountain Model)​​...

基于.Net开发的网络管理与监控工具

从零学习构建一个完整的系统 平常项目上线后,不仅意味着开发的完成,更意味着项目正式进入日常运维阶段。在这个阶段,网络的监控与管理也是至关重要的,这时候就需要一款网络管理工具,可以协助运维人员用于日常管理&…...

Python并发编程:开启性能优化的大门(7/10)

1.引言 在当今数字化时代,Python 已成为编程领域中一颗璀璨的明星,占据着编程语言排行榜的榜首。无论是数据科学、人工智能,还是 Web 开发、自动化脚本编写,Python 都以其简洁的语法、丰富的库和强大的功能,赢得了广大…...