Linux中source和bash的區別

在Linux中,sourcebash(或sh)都是用于執行Shell腳本的命令,但它們在執行方式和作用域上有顯著區別:

在這里插入圖片描述


1. 執行方式

  • bash script.sh(或sh script.sh

    • 啟動一個新的子Shell進程來執行腳本。
    • 腳本中的變量、函數、別名等僅在子Shell中生效,父Shell環境不會受到影響
    • 腳本執行完畢后,子Shell退出,所有修改隨之消失。
  • source script.sh(或. script.sh

    • 直接在當前Shell環境中執行腳本,不創建子Shell。
    • 腳本中對環境變量、路徑、函數等的修改會直接影響當前Shell會話
    • 常用于加載配置文件(如~/.bashrc)或更新當前環境。

2. 作用域對比

場景bash script.shsource script.sh
變量定義僅在子Shell中有效當前Shell中生效
修改PATH等環境變量不影響當前Shell直接影響當前Shell
執行后退出子Shell終止,修改丟失修改持久保留

3. 典型用途

  • bash
    適合運行獨立腳本,無需影響當前環境(例如工具腳本、測試任務)。

  • source
    需要修改當前Shell狀態時使用,例如:

    source ~/.bashrc  # 重新加載配置
    source venv/bin/activate  # 激活Python虛擬環境
    

4. 其他區別

  • 權限要求
    bash script.sh需要腳本有可執行權限(或通過解釋器顯式調用),而source不需要。
  • 調試
    bash -x script.sh可以調試腳本,而source的調試需結合set -x

示例驗證

假設腳本test.sh內容:

#!/bin/bash
export VAR="hello"
  • 執行bash test.sh后,echo $VAR輸出為空(變量未保留)。
  • 執行source test.sh后,echo $VAR輸出hello(變量已生效)。

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

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

相關文章

解決文明6 內存相關內容報錯EXCEPTION_ACCESS_VIOLATION

我裝了很多Mod,大約五六十個,經常出現內存讀寫異常的報錯。為了這個問題,我非常痛苦,已經在全球各大論壇查詢了好幾周,終于在下方的steam評論區發現了靠譜的解答討論區。 https://steamcommunity.com/app/289070/dis…

IIS 實現 HTTPS:OpenSSL證書生成與配置完整指南

參考 IIS7使用自簽名證書搭建https站點(內網外網都可用) windows利用OpenSSL生成證書,并加入IIS 親測有效 !!! IIS 配置自簽名證書 參考:IIS7使用自簽名證書搭建https站點(內網外網都可用) 親測可行性,不成功。 IIS 配置OpenSSL 證書 √ OpenSSL 下載 https://slp…

Spark DAG、Stage 劃分與 Task 調度底層原理深度剖析

Spark DAG、Stage 劃分與 Task 調度底層原理深度剖析 核心知識點詳解 1. DAG (Directed Acyclic Graph) 的構建過程回顧 Spark 應用程序的執行始于 RDD 的創建和一系列的轉換操作 (Transformations)。這些轉換操作(如 map(), filter(), reduceByKey() 等&#xff…

關于阿里云-云消息隊列MQTT的連接和使用,以及SpringBoot的集成使用

一、目的 本文主要記錄物聯網設備接入MQTT以及對接服務端SpringBoot整個的交互流程和使用。 二、概念 2.1什么是MQTT? MQTT是基于TCP/IP協議棧構建的異步通信消息協議,是一種輕量級的發布、訂閱信息傳輸協議。可以在不可靠的網絡環境中進行擴展,適用…

車載功能框架 --- 整車安全策略

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

HarmonyOS5 讓 React Native 應用支持 HarmonyOS 分布式能力:跨設備組件開發指南

以下是 HarmonyOS 5 與 React Native 融合實現跨設備組件的完整開發指南,綜合關鍵技術與實操步驟: 一、分布式能力核心架構 React Native JS 層 → Native 橋接層 → HarmonyOS 分布式能力層(JavaScript) (ArkTS封裝) (設備發現/數據同步/硬件…

Unity打包到微信小程序的問題

GUI Error: Invalid GUILayout state in FlowchartWindow view. Verify that all layout Begin/End calls match UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) 第一個問題可以不用管,這個不影響,這個錯誤,但是可以正常運行&a…

Hugging face 和 魔搭

都是知名的模型平臺,二者在定位、功能、生態等方面存在區別,具體如下: 一、定位與背景 Hugging Face: 定位是以自然語言處理(NLP)為核心發展起來的開源模型平臺,后續逐步拓展到文本、音頻、圖…

React 第六十一節 Router 中 createMemoryRouter的使用詳解及案例注意事項

前言 createMemoryRouter 是 React Router 提供的一種特殊路由器,它將路由狀態存儲在內存中而不是瀏覽器的 URL 地址欄中。 這種路由方式特別適用于測試、非瀏覽器環境(如 React Native)以及需要完全控制路由歷史的場景。 一、createMemoryRouter 的主要用途 測試環境:在…

透視黃金窗口:中國有機雜糧的高質量躍遷路徑

一、行業概覽:藍海市場背后的結構性紅利 伴隨全民健康意識提升和中產階層的擴大,中國有機雜糧市場正迎來新一輪結構性紅利期。根據《健康中國3.0時代:粗糧食品消費新趨勢與市場增長極》數據顯示,2020 年中國有機雜糧市場規模約 3…

實現p2p的webrtc-srs版本

1. 基本知識 1.1 webrtc 一、WebRTC的本質:實時通信的“網絡協議棧”類比 將WebRTC類比為Linux網絡協議棧極具洞察力,二者在架構設計和功能定位上高度相似: 分層協議棧架構 Linux網絡協議棧:從底層物理層到應用層(如…

OpenCV CUDA模塊圖像變形------對圖像進行上采樣操作函數pyrUp()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 函數用于對圖像進行 上采樣操作(升采樣),是 GPU 加速版本的 高斯金字塔向上采樣(Gaussian Pyrami…

勒貝格測度、勒貝格積分

又要接觸測度論了。隨著隨機規劃的不斷深入,如果涉及到證明部分,測度論的知識幾乎不可或缺。 測度論的相關書籍,基本都非常艱澀難讀,對于非數學專業出身的人入門非常不易。從十幾年前開始,我很難把測度論教材看到超過…

UE5 學習系列(一)創建一個游戲工程

這個系類筆記用來記錄學習 UE 過程中遇到的一些問題與解決方案。整個博客的動機是在使用 AirSim 中遇到了不少性能瓶頸,因此想要系統性地去學一下 UE ,這個系列博客主要是跟著 B 站大佬 歐醬~ 和 GenJi是真想教會你 的系列視頻 《500 分鐘學會…

Nginx 負載均衡、高可用及動靜分離

Nginx 負載均衡、高可用及動靜分離深度實踐與原理剖析 在互聯網應用架構不斷演進的今天,如何高效地處理大量用戶請求、保障服務的穩定性與性能,成為開發者和運維人員面臨的關鍵挑戰。Nginx 作為一款高性能的 Web 服務器和反向代理服務器,憑借…

stm32溫濕度-超聲波-LCD1602結合項目(Proteus仿真程序)

資料下載地址:stm32溫濕度-超聲波-LCD1602結合項目(Proteus仿真程序) 程序實現功能: 程序基于stm32芯片實現了控制LED燈亮滅、按鍵控制、串口通信、電機控制、溫濕度數據采集、超聲波測距、LCD顯示屏顯示內容這幾個功能,并用proteus8進行仿…

新一代python管理工具--uv

uv 工具全方位介紹 起源與背景 uv 是由 Astral(pipx 作者)團隊用 Rust 語言開發的新一代 Python 包和環境管理工具。其目標是解決傳統 pip/venv/conda 在依賴解析慢、環境隔離繁瑣、命令復雜等方面的痛點,為現代 Python 項目提供極速、自動…

路由交換技術-思科拓撲搭建

配置流程 1.搭建網絡拓撲圖。 2.規劃配置IP地址,內網配置為192.168.1.0和192.168.2.0網段。 3.劃分vlan10,vlan20,vlan30。 4.配置靜態、動態路由。配置路由器Router7,使內外網互通。 5.配置鏈路聚合。通過鏈路聚合技術&#xff…

清華大學視覺空間智能新突破!Spatial-MLLM:提升多模態大語言模型的視覺空間智能能力

作者:Diankun Wu, Fangfu Liu, Yi?Hsin Hung, Yueqi Duan 單位:清華大學 論文標題:Spatial-MLLM: Boosting MLLM Capabilities in Visual-based Spatial Intelligence 論文鏈接:https://arxiv.org/pdf/2505.23747 項目主頁&a…

AI與機器學習ML:利用Python 從零實現神經網絡

自線性回歸以來,我們已經涵蓋了很多領域。在本期中,我們將開始了解神經網絡內部工作原理的旅程*。* 如果一個人試圖了解任何使用生成式 AI 的工具、應用程序、網站或其他系統的內部工作原理,那么掌握神經網絡的架構至關重要。在這個故事中&a…