【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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82581.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

針對Mkdocs部署到Githubpages加速訪問速度的一些心得

加速網站訪問的一些心得 在使用 MkDocs 構建網站時,為了提高訪問速度,我們可以采取以下一些措施: 1. 優化圖片 使用合適的圖片格式,如 WebP、JPEG2000 等,減少圖片文件大小,從而加快加載速度。 可以使用…

Mysql中切割字符串作為in的查詢條件

問題:需要將一個字符串切割成數組作為in的查詢條件,如: select * from table_1 where name in (select slit(names) from table_2 where id 3); names 返回的格式是’name1,name2,name3…,需要將name按照逗號切割作為in的查詢條件&#xff1b…

云計算中的虛擬化:成本節省、可擴展性與災難恢復的完美結合

云計算中虛擬化的 4 大優勢 1. 成本效益 從本質上講,虛擬化最大限度地減少了硬件蔓延。團隊可以將多個虛擬機整合到單個物理主機上,而不是為每個工作負載部署單獨的服務器。這大大減少了前期硬件投資和持續維護。 結果如何?更低的功耗、更低…

Linux : 多線程【線程概念】

Linux : 多線程【線程概念】 (一)線程概念線程是什么用戶層的線程linux中PID與LWP的關系 (二) 進程地址空間頁表(三) 線程總結線程的優點線程的缺點線程異常線程用途 (一)線程概念 線程是什么 在一個程序里的一個執行…

IDEA轉戰TREA AI IDE : springboot+maven+vue項目配置

一、trea下載安裝 Trae官方網址: https://www.trae.com.cn/ Trae官方文檔:https://docs.trae.com.cn/docs/what-is-trae?_langzh w3cschool: https://www.w3cschool.cn/traedocs/ai-settings.html 安裝這里省略,正常安裝即可。…

Java--圖書管理系統(簡易版)

目錄 目錄 前言 🔔1.library包 1.1 Book類 1.2 BookList類 🔔2.user包 2.1User類(父類) 2.2Admin(管理員) 2.3 NormalUser(普通用戶) 🔔3.Operation包 🕐3.1 IOperation接口 🕑3.2ListOperation(查看操作)…

深入淺出:Spring Boot 中 RestTemplate 的完整使用指南

在分布式系統開發中,服務間通信是常見需求。作為 Spring 框架的重要組件,RestTemplate 為開發者提供了簡潔優雅的 HTTP 客戶端解決方案。本文將從零開始講解 RestTemplate 的核心用法,并附贈真實地圖 API 對接案例。 一、環境準備 在 Spring…

大數據處理利器:Hadoop 入門指南

一、Hadoop 是什么?—— 分布式計算的基石 在大數據時代,處理海量數據需要強大的技術支撐,Hadoop 應運而生。Apache Hadoop 是一個開源的分布式計算框架,致力于為大規模數據集提供可靠、可擴展的分布式處理能力。其核心設計理念是…

685SJBH計量管理系統

摘 要 計量,在我國已有五千年的歷史。計量的發展與社會進步聯系在一起,它是人類文明的重要組成部分。它的發展經歷了古典階段、經典階段和現代階段。而企業的計量管理是對測量數據、測量過程和測量設備的管理。 本系統通過分析現有計量系統的業務邏輯…

從0到1構建前端監控系統:錯誤捕獲、性能采集、用戶體驗全鏈路追蹤實戰指南SDK實現

目錄 前言為什么要做前端監控前端監控目標穩定性用戶體驗業務 前端監控流程常見埋點方案代碼埋點可視化埋點無痕埋點 創建項目第一步、創建monitor文件,cmd進入文件進行npm init -y 項目初始化第二步、創建src/index.js和src/index.html文件第三步、創建webpack.con…

前端瀏覽器判斷設備類型的方法

前端瀏覽器判斷設備類型的方法 在前端開發中,判斷設備類型(如手機、平板、桌面電腦)有多種方法,以下是常用的幾種方式: 1. 使用 User Agent 檢測 通過 navigator.userAgent 獲取用戶代理字符串進行判斷:…

MNIST 手寫數字分類

轉自我的個人博客: https://shar-pen.github.io/2025/05/04/torch-distributed-series/1.MNIST/ 基礎的單卡訓練 本筆記本演示了訓練一個卷積神經網絡(CNN)來對 MNIST 數據集中的手寫數字進行分類的過程。工作流程包括: 數據準備&#xff…

數據庫中的 Segment、Extent、Page、Row 詳解

在關系型數據庫的底層存儲架構中,數據并不是隨意寫入磁盤,而是按照一定的結構分層管理的。理解這些存儲單位對于優化數據庫性能、理解 SQL 執行過程以及排查性能問題都具有重要意義。 我將從宏觀到微觀,依次介紹數據庫存儲中的四個核心概念&…

DAMA車輪圖

DAMA車輪圖是國際數據管理協會(DAMA International)提出的數據管理知識體系(DMBOK)的圖形化表示,它以車輪(同心圓)的形式展示了數據管理的核心領域及其相互關系。以下是基于用戶提供的關鍵詞對D…

《QDebug 2025年4月》

一、Qt Widgets 問題交流 1. 二、Qt Quick 問題交流 1.QML單例動態創建的對象,訪問外部id提示undefined 先定義一個窗口組件,打印外部的id: // MyWindow.qml import QtQuick 2.15 import QtQuick.Window 2.15Window {id: controlwidth: …

JS | 正則 · 常用正則表達式速查表

以下是前端開發中常用的正則表達式速查表,包含驗證規則、用途說明與示例: 📌 常用正則表達式速查表 名稱正則表達式描述 / 用途示例手機號/^1[3-9]\d{9}$/中國大陸手機號13812345678 ?座機號/^0\d{2,3}-?\d{7,8}$/固定電話010-12345678 ?…

系統思考:個人與團隊成長

四年前,我交付的系統思考項目,今天學員的反饋依然深深觸動了我。 我常常感嘆,系統思考不僅僅是一場培訓,更像是一場持續的“修煉”。在這條修煉之路上,最珍貴的,便是有志同道合的伙伴們一路同行&#xff0…

寫屏障和讀屏障的區別是什么?

寫屏障(Write Barrier)與讀屏障(Read Barrier)的區別 在計算機科學中,寫屏障和讀屏障是兩種關鍵的內存同步機制,主要用于解決并發編程中的可見性、有序性問題,或在垃圾回收(GC&…

ssh -T git@github.com 測試失敗解決方案:修改hosts文件

問題描述 通過SSH方式測試,使用該方法測試連接可能會遇到連接超時、端口占用的情況,原因是因為DNS配置及其解析的問題 ssh -T gitgithub.com我們可以詳細看看建立 ssh 連接的過程中發生了什么,可以使用 ssh -v命令,-v表示 verbo…