【Linux】環境變量

目錄

  • 一、環境變量的概念
  • 二、 常見的環境變量
    • 1.查看環境變量的方法
    • 2.PATH
    • 3.HOME
    • 4.SHELL
  • 三、環境變量的相關指令
  • 四、命令行參數

一、環境變量的概念

環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數
如:我們在編寫C/C++代碼的時候,在鏈接的時候,從來不知道我們的所鏈接的動態靜態庫在哪里,但 是照樣可以鏈接成功,生成可執行程序,原因就是有相關環境變量幫助編譯器進行查找。
環境變量通常具有某些特殊用途,還有在系統當中通常具有全局特性

我們寫了一個程序,編譯好形成一個可執行文件,也稱為命令。
在這里插入圖片描述
在這里插入圖片描述

我們在執行我們自己寫的程序時需要加上 ./程序名:本質是幫系統確認對應的程序在哪里
在這里插入圖片描述

什么原理?玩下看

windows系統下的環境變量
在這里插入圖片描述

二、 常見的環境變量

PATH : 指定命令的搜索路徑
HOME : 指定用戶的主工作目錄(即用戶登陸到Linux系統中時,默認的目錄)
SHELL : 當前Shell,它的值通常是/bin/bash。

1.查看環境變量的方法

echo $環境變量名
?
在這里插入圖片描述
?在這里插入圖片描述
?
在這里插入圖片描述

2.PATH

怎樣使自己的命令不帶路徑執行?

1.可以將自己的命令拷貝到,PATH環境變量的路徑下。
但是這種情況非常不推薦,會污染系統的命令池。

2.可以將將命令的當前路徑添加到PATH環境變量中。(關閉Xshell時會失效)

export PATH=$PATH:當前命令所在路徑

實例:
在這里插入圖片描述

PATH:Linux系統的指令搜索路徑

3.HOME

為什么普通用戶開始進入的目錄是在/home/wt下,而root用戶進入時是在/root下呢?這是因為環境變量HOME是不同的

普通用戶
在這里插入圖片描述
root
在這里插入圖片描述

4.SHELL

執行shell 命令所在路徑:

在這里插入圖片描述

三、環境變量的相關指令

了解環境變量的相關指令之前,需要先了解本地變量
在這里插入圖片描述
本地變量,只會在本BASH中有效,不會被繼承,如果想被繼承,需要export導出
?
使用echo命名查找本地變量
在這里插入圖片描述
但是我們知道本地變量不能被繼承,調用指令一般會產生新的進程,那echo是如何將myval的值打印出來呢?
?
提出新的概念:
1.常規命令 – 通過創建子進程完成
2.內建命令 – bash不創建子進程,而是由自己親自執行,類似于bash調用了自己寫的,或者系統提供的函數

  • echo:顯示某個環境變量值
  • export:設置一個新的環境變量
  • env:顯示所有環境變量
  • unset:清除環境變量
  • set:顯示本地的shell變量和環境變量

env 指令

顯示所有環境變量

在這里插入圖片描述
?
set

顯示本地的shell變量和環境變量

在這里插入圖片描述
?
export

設置一個新的環境變量,可將本地的環境變量導入到全局

在這里插入圖片描述
?
unset

清除環境變量

在這里插入圖片描述

四、命令行參數

為什么執行 ls命令時會帶-a -l -n各種選項,其實這些選項就是命令行參數。
命名行參數為指令,工具,軟件等提供命令行選項的支持。

通過命令獲取命令行參數:

#include<stdio.h>
#include<unistd.h>int main(int argc, char*argv[]) // main函數的隱藏參數
{for(int i = 0; i < argc; ++i){printf("argv[%d]-> %s\n",i,argv[i]);                                                                                                                           }return 0;}

在這里插入圖片描述
數組指向的這些./test -a -b -c就是命令行參數,通過main函數保存在argv數組中,argc表示參個數。

在這里插入圖片描述
其實命令行參數的本質是:指令有很多選項,每個選項對應不同的功能,選項的底層使用的是命令行參數。

有了命令行參數我們可模擬實現指令的功能

在這里插入圖片描述
在這里插入圖片描述

一條指令的多種功能其實就是通過判斷命令行參數實現不同的功能

由此,我們獲取環境變量的方式有多種

1.通過參數列表獲取環境變量
在這里插入圖片描述

在這里插入圖片描述

我們所運行的進程,都是子進程,bash本身再啟動的時候,會從操作系統的配置文件中讀取環境變量信息,子進程會繼承父進程交給我的環境變量。每個程序都會收到一張環境表,環境表是一個字符指針數組,每個指針指向一個以’\0’結尾的環境字符串
在這里插入圖片描述

如何驗證子進程繼承父進程的環境變量
?在這里插入圖片描述

2.通過代碼獲取環境變量(常用)

在這里插入圖片描述
在這里插入圖片描述

3.第三方變量 environ
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

Prometheus技術文檔-基本使用-配置文件全解!!!!!

簡介&#xff1a; Prometheus是一個開源的系統監控和告警系統&#xff0c;由Google的BorgMon監控系統發展而來。它主要用于監控和度量各種時間序列數據&#xff0c;比如系統性能、網絡延遲、應用程序錯誤等。Prometheus通過采集監控數據并存儲在時間序列數據庫中&#xff0c;…

【視頻】使用OBS將MP4推流至騰訊云直播

1、下載OBS OBS官網:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下載速度很慢,建議使用迅雷下載 2、OBS推流設置 2.1 添加場景 默認會有一個“場景”,如果想繼續添加可以點擊“+”按鈕 2.2 添加媒體源 1)點擊“來源”窗口中“+”按鈕 2)支持的媒體源如…

什么是Redis緩存雪崩、緩存穿透、緩存擊穿

緩存穿透&#xff08;Cache Penetration&#xff09; 什么是緩存穿透&#xff1f; 緩存穿透是指惡意或無效的請求導致緩存無法命中&#xff0c;從而每個請求都需要訪問數據庫。這可能發生在請求的數據根本不存在于緩存和數據庫中。 緩存穿透解決方案 使用布隆過濾器&#x…

安裝Tomac服務器——安裝步驟以及易出現問題的解決方法

文章目錄 前言 一、下載Tomcat及解壓 1、選擇下載版本&#xff08;本文選擇tomcat 8版本為例&#xff09; 2、解壓安裝包 二、配置環境 1、在電腦搜索欄里面搜索環境變量即可 2、點擊高級系統設置->環境變量->新建系統變量 1) 新建系統變量&#xff0c;變量名為…

【學會動態規劃】最大子數組和(19)

目錄 動態規劃怎么學&#xff1f; 1. 題目解析 2. 算法原理 1. 狀態表示 2. 狀態轉移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后&#xff1a; 動態規劃怎么學&#xff1f; 學習一個算法沒有捷徑&#xff0c;更何況是學習動態規劃&#xff0c; 跟我…

LeetCode 0088. 合并兩個有序數組

【LetMeFly】88.合并兩個有序數組&#xff1a;O(m 1) O(1)的做法 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/merge-sorted-array/ 給你兩個按 非遞減順序 排列的整數數組 nums1 和 nums2&#xff0c;另有兩個整數 m 和 n &#xff0c;分別表示 nums1 和 nums2…

Linux:Shell編輯之文本處理器(sed)

目錄 緒論 1、sed的原理&#xff1a;讀取 執行 顯示 三個過程 2、sed 文本內容處理工具&#xff0c;文件過大怎么辦&#xff1f; 3、sed的操作選項 3.1 常用選項 3.2 操作符 3.3 行號的范圍打印 3.4 對包含指定字符串的內容進行打印 3.5 刪 3.5.1 正則表達式刪除 3.6…

一個工作簿中的多個工作表拆分成多個工作簿

在Excel 2016中將一個工作簿中的多個工作表拆分成多個工作簿&#xff0c;在開發工具中的vba 模塊中輸入一下代碼&#xff08;并修改savepath的值為要存儲的路徑&#xff09;&#xff0c;然后運行即可。 Sub SplitWorkbook()Dim srcWorkbook As WorkbookDim srcWorksheet As Wo…

深入淺出 棧和隊列(附加循環隊列、雙端隊列)

棧和隊列 一、棧 概念與特性二、Stack 集合類及模擬實現1、Java集合中的 Stack2、Stack 模擬實現 三、棧、虛擬機棧、棧幀有什么區別&#xff1f;四、隊列 概念與特性五、Queue集合類及模擬實現1、Queue的底層結構&#xff08;1&#xff09;順序結構&#xff08;2&#xff09;鏈…

Golang-使用 gvm 進行版本控制

當你想為每個項目切換 go 版本時&#xff0c;gvm (Go Version Manager) 很方便。 這里&#xff0c;我將介紹“如何在Mac上安裝gvm”和“如何使用gvm” 使用準備 僅適用于 Mac 的準備工作 按照MacOSX 要求中的說明執行以下命令。 xcode-select --install brew update brew …

C++(Qt)軟件調試---將調試工具安裝到AeDebug(11)

C(Qt)軟件調試—將調試工具安裝到AeDebug&#xff08;11&#xff09; 文章目錄 C(Qt)軟件調試---將調試工具安裝到AeDebug&#xff08;11&#xff09;1、前言1.1 使用的調試工具 2、調試器安裝1.1 WinDbg1.2 procdump1.3 DrMinGW1.4 vsjitdebugger 更多精彩內容&#x1f449;個…

深入了解Linux運維的重要性與最佳實踐

Linux作為開源操作系統的代表&#xff0c;在企業級環境中的應用越來越廣泛。而在保障Linux系統的正常運行和管理方面&#xff0c;Linux運維顯得尤為關鍵。本文將介紹Linux運維的重要性以及一些最佳實踐&#xff0c;幫助讀者更好地了解和掌握Linux系統的運維技巧。 首先&#xf…

OPENCV C++(十)gramm矯正+直方圖均衡化

兩者都是只對單通道使用&#xff0c;對多通道的話 就需要分離通道處理再合并通道 兩種方法&#xff0c;第一個要運算次數太多了&#xff0c;第二個只需要查表 伽馬矯正函數&#xff0c;這里用第二種方法&#xff0c;且寫法有點高級 int gammaCorrection(cv::Mat srcMat, cv::…

Java【Spring】使用注解, 更簡單的存儲和獲取 Bean

文章目錄 前言一、存儲 Bean1, 配置文件2, 五大類注解Bean 的命名規則 3, 方法注解Bean 的命名規則 二、獲取 Bean1, 屬性注入2, Setter 注入3, 構造方法注入4, Autowired 和 Resource 的區別5, 同一個類型的多個 Bean 注入問題 總結 前言 各位讀者好, 我是小陳, 這是我的個人主…

【網絡基礎實戰之路】實現RIP協議與OSPF協議間路由交流的實戰詳解

系列文章傳送門&#xff1a; 【網絡基礎實戰之路】設計網絡劃分的實戰詳解 【網絡基礎實戰之路】一文弄懂TCP的三次握手與四次斷開 【網絡基礎實戰之路】基于MGRE多點協議的實戰詳解 【網絡基礎實戰之路】基于OSPF協議建立兩個MGRE網絡的實驗詳解 PS&#xff1a;本要求基于…

FreeRTOS(任務通知)

資料來源于硬件家園&#xff1a;資料匯總 - FreeRTOS實時操作系統課程(多任務管理) 目錄 一、任務通知的概念 1、概念 2、發送通知給任務的方式 3、任務通知使用限制 二、任務通知的運行機制 三、任務通知的API函數 1、任務通知的數據結構 2、常用的API函數 3、函數x…

opencv實戰項目 手勢識別-實現尺寸縮放效果

手勢識別系列文章目錄 手勢識別是一種人機交互技術&#xff0c;通過識別人的手勢動作&#xff0c;從而實現對計算機、智能手機、智能電視等設備的操作和控制。 1. opencv實現手部追蹤&#xff08;定位手部關鍵點&#xff09; 2.opencv實戰項目 實現手勢跟蹤并返回位置信息&…

Linux elasticsearch設置為開機自啟動服務

Linux elasticsearch怎么設置為設置為開機自啟動服務 1、進入/etc/init.d目錄 cd /etc/init.d 2、新建文件elasticsearch&#xff0c;注意&#xff0c;沒有擴展名 vi elasticsearch 3、新建文件elasticsearch的內容如下 說明&#xff1a; &#xff08;1&#xff09;“su…

基于低代碼和數字孿生技術的電力運維平臺設計

電力能源服務商在為用能企業提供線上服務的時候&#xff0c;不可避免要面對用能企業的各種個性化需求。如果這些需求和想法都要靠平臺廠家研發人員來實現&#xff0c;那在周期、成本、效果上都將是無法滿足服務運營需要的&#xff0c;這也是目前很多線上能源云平臺應用效果不理…

【狀態模式】拯救if-else堆出來的屎山代碼

前言 我想大家平時都在開發重都遇見過屎山代碼&#xff0c;這些屎山代碼一般都是由于復雜且龐大的if-else造成的&#xff0c;狀態模式&#xff0c;是一種很好的優化屎山代碼的設計模式&#xff0c;本文將采用兩個業務場景的示例來講解如何使用狀態模式拯救屎山代碼。 目錄 前…