Shell、Bash 執行方式及./ 執行對比詳解

Shell、Bash 執行方式及./ 執行對比詳解

在 Linux 和 UNIX 系統的使用過程中,Shell 腳本是實現自動化任務、系統管理的重要工具。而在執行 Shell 腳本時,我們常常會用到bash命令以及./的執行方式,這兩種執行方式看似相似,實則存在諸多差異。本文將深入探討 Shell、Bash 的概念,并詳細對比bash和./執行 Shell 腳本的不同之處,幫助你在實際操作中選擇更合適的執行方式。

一、Shell 與 Bash 基礎概念

1.1 Shell 概述

Shell 是用戶與 Linux 內核之間的橋梁,它提供了一個命令行界面,用戶通過輸入命令,Shell 對命令進行解釋并傳遞給內核執行,然后將執行結果返回給用戶。Shell 不僅可以執行系統命令,還支持編寫腳本程序,將一系列命令組合起來,實現自動化任務。常見的 Shell 有 Bash、Zsh、Ksh 等,不同的 Shell 在語法和功能上存在一定差異,但基本原理相同。

1.2 Bash 簡介

Bash(Bourne - Again SHell)是 GNU 計劃中重要的組成部分,也是大多數 Linux 發行版默認的 Shell。它兼容 Bourne Shell(sh)的語法,并在其基礎上進行了大量擴展和增強,例如支持命令補全、歷史命令記錄、別名設置等功能。Bash 提供了豐富的編程結構,如條件語句、循環語句等,方便用戶編寫復雜的 Shell 腳本。由于其廣泛的應用和強大的功能,Bash 成為了 Shell 腳本編寫和執行的主流選擇。

二、使用 bash 執行 Shell 腳本

2.1 執行方式

使用bash命令執行 Shell 腳本非常簡單,只需在命令行中輸入bash,然后跟上腳本的文件名即可。例如,有一個名為test.sh的 Shell 腳本,執行命令如下:

bash test.sh

2.2 執行原理

當使用bash命令執行腳本時,系統會啟動一個新的 Bash 進程,將腳本內容作為輸入傳遞給這個新進程進行解釋執行。在這個過程中,腳本中的命令是在新的子 Shell 環境中運行的,與當前的 Shell 環境相互隔離。這意味著腳本中對環境變量的修改,不會影響到當前 Shell 環境中的變量值;反之,當前 Shell 環境中的變量變化也不會影響腳本執行過程中的變量狀態。

2.3 適用場景

  1. 腳本調試:在腳本開發過程中,使用bash執行腳本便于調試。由于腳本在子 Shell 環境中運行,即使腳本出現錯誤,也不會對當前 Shell 環境造成嚴重影響。同時,bash提供了一些調試選項,如-x,可以在執行腳本時顯示每一條命令及其參數,幫助開發者快速定位問題。例如:
bash -x test.sh
  1. 臨時執行腳本:當需要臨時執行一個 Shell 腳本,且不希望腳本對當前 Shell 環境產生影響時,使用bash執行是一個不錯的選擇。比如,運行一些一次性的系統清理腳本,在子 Shell 環境中執行可以避免意外修改當前 Shell 的重要配置。

三、使用./ 執行 Shell 腳本

3.1 執行方式

使用./執行 Shell 腳本,首先需要確保腳本具有可執行權限。可以通過chmod命令賦予腳本可執行權限,例如:

chmod +x test.sh

然后在命令行中輸入./test.sh來執行腳本。

3.2 執行原理

使用./執行 Shell 腳本時,系統會根據腳本第一行的Shebang(#!/bin/sh 或 #!/bin/bash 等)指定的 Shell 程序來執行腳本。如果腳本第一行是#!/bin/bash,則系統會啟動 Bash 程序,并將腳本內容傳遞給它進行解釋執行。與bash命令執行不同的是,使用./執行腳本是在當前 Shell 環境中進行的(除非腳本中顯式地創建了新的子 Shell),這意味著腳本中對環境變量的修改會直接影響到當前 Shell 環境。

3.3 適用場景

  1. 正式運行腳本:當腳本開發完成,確認無誤后,使用./執行腳本是常見的方式。因為在這種方式下,腳本與當前 Shell 環境緊密關聯,能夠充分利用當前環境的配置和變量,實現更符合預期的功能。例如,一些長期運行的服務腳本,通過./執行可以確保其與系統環境的一致性。
  1. 腳本依賴當前環境:如果腳本需要依賴當前 Shell 環境中的特定配置或變量,使用./執行是必要的。比如,腳本中引用了當前 Shell 環境中設置的路徑變量來查找相關文件,只有在當前 Shell 環境中執行才能正確獲取這些變量值,保證腳本正常運行。

四、bash 與./ 執行方式的對比

4.1 環境影響

  • bash:在子 Shell 環境中執行,對當前 Shell 環境無影響,腳本中的變量修改不會傳遞到外部。
  • ./:在當前 Shell 環境中執行,腳本對環境變量的修改會影響當前 Shell,可能會改變后續命令的執行結果。

4.2 執行權限要求

  • bash:無需腳本具有可執行權限,只要能訪問到腳本文件,即可使用bash命令執行。
  • ./:必須賦予腳本可執行權限(chmod +x),否則系統會提示權限不足,無法執行腳本。

4.3 執行效率

一般情況下,兩者的執行效率差異不大。但在一些特殊場景下,由于bash命令執行時會啟動新的進程,可能會帶來一定的額外開銷;而./執行在當前 Shell 環境中,相對減少了進程創建的開銷,在某些情況下可能會稍快一些。不過這種差異在大多數常規腳本執行中并不明顯。

4.4 錯誤處理與調試

  • bash:提供了豐富的調試選項,如-x,方便開發者進行腳本調試,且由于在子 Shell 環境執行,即使腳本出錯也不會輕易破壞當前 Shell 環境,安全性較高。
  • ./:在當前 Shell 環境執行,如果腳本出現嚴重錯誤,可能會影響當前 Shell 的正常運行,導致后續命令無法執行,增加了調試和恢復的難度。

五、總結

Shell、Bash 以及bash和./執行方式在 Linux 系統的腳本執行中都扮演著重要角色。bash命令執行腳本適合腳本調試和臨時執行,能夠有效隔離腳本對當前環境的影響;而./執行方式則更適用于腳本的正式運行,以及需要依賴當前 Shell 環境的場景。在實際使用過程中,我們應根據具體需求和場景,合理選擇執行方式,以確保 Shell 腳本能夠安全、高效地運行。通過深入理解它們之間的差異,有助于我們更好地掌握 Linux 系統的腳本執行機制,提升系統管理和自動化任務的效率。

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

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

相關文章

P1494 [國家集訓隊] 小 Z 的襪子 Solution

Description 給定序列 a ( a 1 , a 2 , ? , a n ) a(a_1,a_2,\cdots,a_n) a(a1?,a2?,?,an?)&#xff0c;有 q q q 次查詢&#xff0c;每次查詢給定 ( l , r ) (l,r) (l,r). 你需要求出 2 ∑ i ≤ i < j ≤ r [ a i a j ] ( r ? l ) ( r ? l 1 ) \dfrac{2\sum…

解決vue3 路由query傳參刷新后數據丟失的問題

前言&#xff1a;在頁面刷新的時候&#xff0c;路由query數據會被清空&#xff0c;網上很多方法說query傳參可以實現&#xff0c;反正我是沒有實現 思路&#xff1a;將數據保存到本地&#xff0c;通過 “ &#xff1f;” 進行判斷是否有數據&#xff0c;頁面銷毀的時候刪除本地…

IIC小記

SCL 時鐘同步線&#xff0c;由主機發出。 當SCL為高電平&#xff08;邏輯1&#xff09;時是工作狀態&#xff0c;低電平&#xff08;邏輯0&#xff09;時是休息狀態。SCL可以控制通信的速度。 SDA 數據收發線 應答位&#xff1a;前八個工作區間是一個字節&#xff0c;在SCL…

Linux[開發工具]

vim(多模式編輯器) vim是一個多模式的編譯器!!命令模式是核心 vim 文件名 (數字)(進入編輯,光標處在第幾行) esc切換模式 shift; >:(:wq保存并退出) 命令模式: 鍵盤的輸入,默認被當做命令來看待 gg:光標快速定位到最開始 shiftgG:股那個表快速定位到最結尾 nshiftgG:光標…

hutools工具類中isNotEmpty與isNotBlank區分

基于以下兩種情況。在判斷的變量是String類型時&#xff0c; 判斷是否為空&#xff0c;推薦使用isNotBlank(). 1. isNotEmpty 不會驗證str中是否含有空字符串&#xff0c;而 isNotBlank方法會驗證 public static boolean isNotEmpty(CharSequence str) {return false isEmpty…

算法相關概念

1 算法概述 1.1 算法概念 算法是特定問題求解步驟的描述&#xff0c;也是獨立存在的一種解決問題的思想和方法 對于算法而言&#xff0c;實現他的編程語言無關緊要&#xff0c;重要的是思想和方法&#xff01;&#xff01;&#xff01; 公式&#xff1a;程序算法數據結構&a…

數據庫基礎與核心操作:從概念到實戰的全面解析

目錄 1 基本概念2 基本操作2.1 DCL2.2 DDL2.3 DML2.4 DQL(高級查詢) 3 高級功能3.1 視圖&#xff08;無參函數&#xff09;3.2 存儲過程(有參函數)3.3 觸發器 4 約束4.1 主鍵約束4.2 UNIQUE KEY&#xff08;唯一鍵約束&#xff09;4.3 FOREIGN KEY&#xff08;外鍵約束&#xf…

打造驚艷的漸變色下劃線動畫:CSS實現詳解

引言&#xff1a;為什么需要動態下劃線效果&#xff1f; 在現代網頁設計中&#xff0c;微妙的交互效果可以顯著提升用戶體驗。動態下劃線特效作為一種常見的視覺反饋方式&#xff0c;不僅能夠引導用戶注意力&#xff0c;還能為頁面增添活力。本文將深入解析如何使用純CSS實現一…

【11408學習記錄】考研英語語法核心:倒裝句考點全解+真題演練

倒裝句 英語語法總結——特殊句式倒裝全部倒裝介詞短語形容詞副詞There be 部分倒裝否定副詞或詞組位于句首only位于句首虛擬條件句省略if 每日一句詞匯第一步&#xff1a;找謂語第二步&#xff1a;斷句第三步&#xff1a;簡化主句定語從句 英語 語法總結——特殊句式 倒裝 …

upload-labs PASS 1-5通關

PASS-01 前端javascript檢查 1&#xff0c;第一個提示javascript對上傳的文件進行審查 2&#xff0c;javascript工作在前端頁面&#xff0c;可以直接刪除具有審查功能的代碼 3&#xff0c;刪除之后再上傳一句話木馬 上傳成功&#xff0c;可以使用蟻劍進行連接&#xff0c;控制網…

GoogleTest:在Ubuntu22.04安裝

1.首先克隆GoogleTest $ mkdir gtest $ cd gtest $ git clone git@github.com:google/googletest.git 克隆后的文件目錄結構為 gtest/googletest$ tree -L 1 ├── build ├── BUILD.bazel ├── ci ├── CMakeLists.txt ├── CONTRIBUTING.md ├── CONTRIBUTORS ├─…

Transformer-LSTM-SVM回歸

題目&#xff1a;Transformer-LSTM-SVM回歸 文章目錄 題目&#xff1a;Transformer-LSTM-SVM回歸前言一&#xff1a;Transformer1. Transformer的原理1.1 Transformer的核心結構1.2 注意力機制1.4 位置編碼1.5 損失函數 2. 完整案例 LSTMSVM 前言一&#xff1a;Transformer 1.…

AI正當時,國內AI HR領先廠商易路如何從“單點突破”到“全面融合”

所謂AI HR?&#xff0c;是指將人工智能&#xff08;AI&#xff09;技術&#xff08;如機器學習、自然語言處理、大數據分析等&#xff09;應用于人力資源管理的各個環節&#xff0c;以提升效率、優化決策并改善員工體驗。典型場景有&#xff1a; 在招聘、考勤、薪酬計算等重復…

淺析localhost、127.0.0.1 和 0.0.0.0的區別

文章目錄 三者的解釋三者的核心區別總結使用場景示例什么是回環地址常見問題開發工具中的地址使用為什么開發工具同時支持localhost和127.0.0.1&#xff1f;實際應用示例VSCode中的Live Server插件VSCode中的VUE項目IDEA中的Spring Boot應用 最佳實踐建議 localhost、 127.0.0…

微信小程序鮮花銷售系統設計與實現

概述 在鮮花電商行業快速發展的背景下&#xff0c;移動端銷售平臺成為花店拓展業務的重要渠道。幽絡源平臺今日分享一款功能完善的微信小程序鮮花銷售系統&#xff0c;該系統實現了多角色管理、在線訂購、會員服務等核心功能&#xff0c;為鮮花行業提供了完整的電商解決方案。…

端到端電力電子建模、仿真與控制及AI推理

在當今世界&#xff0c;電力電子不再僅僅是一個專業的利基領域——它幾乎是每一項重大技術變革的支柱。從可再生能源到電動汽車&#xff0c;從工業自動化到航空航天&#xff0c;對電力轉換領域創新的需求正以前所未有的速度增長。而這項創新的核心在于一項關鍵技能&#xff1a;…

Elastic Cloud Serverless 現在在 Google Cloud 上正式發布

作者&#xff1a;來自 Elastic Yuvraj Gupta Elastic Cloud Serverless 提供了啟動和擴展安全、可觀察性和搜索解決方案的最快方式 — 無需管理基礎設施。 今天&#xff0c;我們很高興宣布 Elastic Cloud Serverless 在 Google Cloud 上正式發布 — 現在已在愛荷華&#xff08;…

deepseek_ai_ida_plugin開源插件,用于使用 DeepSeekAI 將函數反編譯并重命名為人類可讀的視圖。該插件僅在 ida9 上進行了測試

一、軟件介紹 文末提供程序和源碼下載 deepseek_ai_ida_plugin開源插件&#xff0c;用于使用 DeepSeekAI 將函數反編譯并重命名為人類可讀的視圖。該插件僅在 ida9 上進行了測試。FunctionRenamerDeepseekAI.cpp 此文件包含 Hex-Rays 反編譯器的主要插件實現。它反編譯當前函數…

信息系統項目管理工程師備考計算類真題講解十一

一、運籌學 1&#xff09;線性規劃 分析&#xff1a;設為獲得最大利潤&#xff0c;S應生產X件&#xff0c;K生產Y件 10X20Y<120 8X8Y<80 求MAX(12X16Y) 計算下面的方程式&#xff1a; 10X20Y120 8X8Y80 X8 2)交通運輸問題&#xff1a; 分析&#xff1a; 此題采…

深入學習解讀:《數據安全技術 數據分類分級規則》【附全文閱讀】

該文詳細闡述了數據安全技術的數據分類分級規則,內容分為基本原則、數據分類規則、數據分級規則及數據分類分級流程四大部分。 基本原則強調科學實用、動態更新、就高從嚴及53原則(雖表述不清,但可理解為多重原則的結合),同時要求邊界清晰、點面結合。 數據分類規…