shell腳本不同運行方式的差異

来源:https://www.cnblogs.com/shushengjiema/archive/2018/11/24/10011890.html
-Advertisement-
Play Games

說明:以下是個人的見解,不一定都正確,如有錯誤,歡迎指正! 一,shell腳本的運行方式,最常見的有以下幾種: 1 ) . xxx.sh,註意,前面是一個點'.' 2 ) source xxx.sh,這種方式和第一種的方式效果是一樣的 3)./xxx.sh 4) sh xxx.sh 5) bash ...


說明:以下是個人的見解,不一定都正確,如有錯誤,歡迎指正!

一,shell腳本的運行方式,最常見的有以下幾種:

1 )  . xxx.sh,註意,前面是一個點'.'

2 ) source xxx.sh,這種方式和第一種的方式效果是一樣的

3)./xxx.sh

4)  sh xxx.sh

5)  bash xxx.sh

 

二,shell運行方式結果的差異

1) . xxx.sh是在當前的bash環境下執行xxx.sh腳本文件,xxx.sh文件的所有者可以無可執行許可權,原有的環境變數的值會被腳本修改。

2)source  xxx.sh,這種方式和方式1的執行效果是一樣的,同樣也不要求文件的所有者必須要有可執行許可權,通常用於生效剛修改過的腳本文件,例如我們在修改環境變數配置腳本文件之後就通過執行source xxx使其立即生效,同樣這種執行方式會修改原有的環境變數的值。

第一和第二種方式會修改原有的環境變數的值。

 

3)./xxx.sh方式運行腳本文件,會打開一個子shell來執行腳本文件,運行一個shell腳本時會啟動另一個命令解析器。每個shell腳本運行在parent shell的一個子進程里,這個parent shell是指一個在控制終端或者在一個xterm視窗中給你指示符的進程,shell腳本也可以啟動它自己的子進程。

 

這種運行方式要求被運行的腳本文件要有可執行的許可權,否則腳本運行失敗。

這種運行方式不會改變原有的環境變數的值。

 

4)sh xx.sh的方式執行腳本文件,這種方式會打開新的子shell讀取並執行腳本,並且不要求被執行的文件必須有可執行的許可權。

原有的環境變數的值沒被改變

 

5)bash xxx.sh的方式運行腳本文件,這種運行方式也沒有要求被執行文件必須有可執行的許可權,和sh xxx.sh方式一樣會打開新的子shell讀取並執行腳本,也不會改變原有的環境變數的值。


總結:

  我們在寫腳本的時候,有時候需要改變原有的環境變數的值,有時候不能改變原有的環境變數的值,這時候我們就要註意選擇運行腳本的方式了,因為不同的運行腳本的方式會產生不同的結果。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • DevExpress中的Dashboard這個圖形插件真的很好用, 只需要在設計器綁定數據就行了,完全不用寫後臺代碼.我也是剛學這個插件,可能還有一些我沒有瞭解的知識點,忘各位大佬不吝賜教.我寫這篇博文也是為了給想我一樣剛研究這個插件的博友們一些我的總結,給各位節省一些時間,哈哈. 1. 當我們創建 ...
  • 門禁服務程式已經調試完成,基於項目實時性要求,使用SignalR實現門禁狀態實時獲取和控制。 ...
  • 接著上一章繼續聊這個項目 本章主要會介紹到一下幾點 配置文件強類型model轉化 redis使用 一.基礎類介面的實現 1.首先創建IConfigGeter介面 介面代碼如下: 2.實現介面 介面實現代碼如下 3.創建一個ConfigLocator配置文件獲取器 實現代碼如下: 二.在program ...
  • 今天給大家分享一下採用asp.net core 快速構建小型創業公司後臺管理系統,該項目是我給一個朋友做的,將要用到公司項目,今天分享出來許可權管理模塊喜歡的朋友可以試用用一下。 項目不是一個什麼新項目,也沒有用到什麼牛逼的東西,但裡面融入了我用asp.net core構建管理系統的思考,可以說是思想 ...
  • 1. 內核空間和用戶空間 過去,CPU的地址匯流排只有32位, 32的地址匯流排無論是從邏輯上還是從物理上都只能描述4G的地址空間(232=4Gbit),在物理上理論上最多擁有4G記憶體(除了IO地址空間,實際記憶體容量小於4G),邏輯空間也只能描述4G的線性地址空間。 為了合理的利用邏輯4G空間,Linu ...
  • 1 Linux如何描述物理記憶體 Linux把物理記憶體劃分為三個層次來管理 層次| 描述 | 存儲節點(Node) | CPU被劃分為多個節點(node), 記憶體則被分簇, 每個CPU對應一個本地物理記憶體, 即一個CPU node對應一個記憶體簇bank,即每個記憶體簇被認為是一個節點 管理區(Zone) ...
  • 代碼自動上線功能 企業部署代碼上線是件比較麻煩的事情,還好我們有jenkins這個持續集成的軟體可以幫助我們做很多的事情,現在我們就 來測試用jenkins推送代碼上線。 我們這裡測試的是一個html的web頁面監控的代碼上線,做一個簡單的小教程,先不涉及動態語言和資料庫。 準備環境 準備三台伺服器 ...
  • 1、cat 顯示出文件的全部內容 (1)格式:cat 文件名 -n 顯示行號 (2)特點:一次性顯示所有文件內容 2、tac 從最後一行倒著顯示文件全部內容 3、more 全屏方式分頁顯示文件內容 回車翻一行 空格向下翻一頁 b 向上翻一頁 q 退出 4、less 與more相同,擴展內容更多 mo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...