Linux環境變量與地址空間

哈嘍,各位Linux初學者們!今天咱們來聊聊Linux中那兩個看起來很高大上但實際上跟我們日常使用息息相關的概念:環境變量和地址空間。別被這些術語嚇到,我會用最接地氣的方式給你解釋清楚!

一、環境變量:Linux的"小紙條"系統

什么是環境變量?

想象一下,環境變量就像是Linux系統里的"小紙條"。每張紙條上都寫著一個名字(變量名)和一段內容(變量值)。當你的程序需要某個信息時,它會去找對應名字的小紙條,然后讀取上面的內容。

舉個栗子:當你在終端輸入ls命令時,系統是怎么知道去哪里找到ls這個程序的呢?答案就是靠一個叫PATH的環境變量!它記錄了系統應該去哪些文件夾里尋找命令。

常見的環境變量

  1. PATH:就像是系統的"導航地圖",告訴系統去哪些地方找程序
  2. HOME:你的家目錄在哪里(比如像我的就是/home/wang)
  3. USER:當前用戶的用戶名
  4. SHELL:你正在使用的Shell類型(如bash、zsh等)
  5. PWD:你當前所在的目錄

如何查看環境變量

#?查看所有環境變量env#?查看特定環境變量echo?$PATHecho?$HOME

如何設置環境變量

臨時設置(關閉終端就失效):

export?MY_VAR="hello?world"

永久設置(需要修改配置文件):

#?在~/.bashrc或~/.bash_profile中添加export?MY_VAR="hello?world"

二、地址空間:程序的"私人領地"

什么是地址空間?

想象你在一個大型購物中心里開了一家店鋪。這個店鋪就是你的"地址空間",你可以在里面自由安排貨架、收銀臺等,而不用擔心會和其他店鋪沖突。

在Linux系統中,每個運行的程序(進程)都有自己的"地址空間",這是系統分配給它的一塊虛擬內存區域。程序可以在這個區域內自由使用內存,而不用擔心會和其他程序沖突。

地址空間的結構

一個典型的Linux進程地址空間從低地址到高地址分為以下幾個部分:

  1. 代碼段(Text):存放程序的機器碼指令,就像是店鋪里的"操作手冊"
  2. 數據段(Data):存放已初始化的全局變量和靜態變量,相當于店鋪里提前準備好的商品
  3. BSS段:存放未初始化的全局變量和靜態變量,相當于空貨架,等著放東西
  4. 堆(Heap):動態分配的內存區域,程序運行時可以向系統申請更多內存,就像是可以根據需要擴展的倉庫空間
  5. 棧(Stack):存放函數調用信息和局部變量,就像是臨時記事本,用完就扔

虛擬內存與物理內存

這里有個很重要的概念:進程看到的地址空間是"虛擬"的!

想象一下:

  • 虛擬內存:就像是你店鋪的平面圖,上面標注了各個區域(收銀臺在哪,貨架在哪)
  • 物理內存:就是實際的商場空間

系統會負責把虛擬地址轉換成實際的物理內存地址,這個過程對程序是透明的。這樣做有很多好處:

  • 每個程序都以為自己獨占整個內存空間
  • 系統可以更靈活地管理物理內存
  • 提供了內存保護機制,防止程序訪問不該訪問的內存區域

三、環境變量與地址空間的關系

當一個程序啟動時,系統會為它創建一個新的地址空間,并且會把當前的環境變量復制一份放到這個新進程的地址空間中。這樣,子進程就能繼承父進程的環境變量了。

這就像是你開分店時,總店會給你一份"經營指南"(環境變量),但之后你對這份指南的修改不會影響總店,總店的變化也不會自動反映到你這里。

四、實際應用例子

1. PATH環境變量的妙用

當你安裝了新軟件,但輸入命令時系統提示"command not found",很可能是因為這個軟件的路徑沒有添加到PATH環境變量中。解決方法:

export?PATH=$PATH:/path/to/your/program

這就像是在你的導航地圖上添加了一個新地點!

2. 理解內存泄漏

如果你的C++程序在堆上分配了內存(使用new或malloc),但忘記釋放(使用delete或free),這塊內存就會一直占用著,直到程序結束。這就是所謂的"內存泄漏",就像是你租了一個倉庫存東西,但一直不退租,即使里面已經空了。

3. 棧溢出

如果你的程序遞歸調用太深,或者在棧上分配了太大的數組,可能會導致棧溢出(Stack Overflow)。這就像是你的記事本頁數用完了,沒地方再記新的信息了。

五、小結

  • 環境變量是系統存儲配置信息的鍵值對,可以被程序訪問,影響程序的行為
  • 地址空間是操作系統為每個進程分配的虛擬內存區域,包含代碼、數據、堆、棧等部分
  • 理解這兩個概念對于解決Linux下的各種問題非常有幫助

希望這篇文章能幫你更好地理解Linux的環境變量和地址空間概念。記住,學習Linux就像學開車,剛開始可能會有點懵,但多練習幾次,你就會發現其實也沒那么復雜!

你有什么問題,隨時問我哦!畢竟在代碼的海洋里,我們都是快樂的"內存泄漏"偵探!🕵??♂

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

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

相關文章

Oracle SHARED POOL的SUB POOL技術

從Oracle 9i開始,SHARED POOL可以分為多個SUB POOL,其數量受以下幾個因素影響: ?系統CPU的數量。默認情況下,在Oracle中每4個CPU分配一個SUB POOL,最多不能超過7個。 ?共享池的大小。SUB POOL的最小容量隨著Oracle版…

Collection集合遍歷的三種方法

1.foreach循環遍歷 格式&#xff1a;for&#xff08;元素的數據類型 變量名&#xff1a;數組或集合&#xff09;{ } 2.使用迭代器遍歷 方法名稱&#xff1a;Iterator<E> iterator&#xff08;&#xff09; 說明&#xff1a;返回集合中的迭代器對象&#xff0c;該迭代…

頭歌之動手學人工智能-Pytorch 之autograd

目錄 第1關&#xff1a;Variable 任務描述 編程要求 測試說明 沒有偉大的愿望&#xff0c;就沒有偉大的天才。——巴爾扎克開始你的任務吧&#xff0c;祝你成功&#xff01; 第2關&#xff1a;Variable 屬性 任務描述 編程要求 測試說明 真正的科學家應當是個幻想家&a…

篇章二 數據結構——前置知識(二)

目錄 1. 包裝類 1.1 包裝類的概念 1.2 基本數據類型和對應的包裝類 1.3 裝箱和拆箱 1.4 自動裝箱和自動拆箱 1.5 練習 —— 面試題 2. 泛型 2.1 如果沒有泛型——會出現什么情況&#xff1f; 2.2 語法 2.3 裸類型 1.沒有寫<> 但是沒有報錯為什么&#xff1f; …

Git典型使用場景相關命令

Git典型使用場景相關命令 1 建立本地倉庫與遠程倉庫的聯系2 作為開發者參與項目的常用命令2-1 一般步驟2-2 **合并與同步主分支改動**2-3 **查看日志和差異**2-4 **提交后想修改或撤銷**2-5 分支管理2-6 清除未被追蹤的文件&#xff08;謹慎使用&#xff09; 3 作為遠程倉庫管理…

redis緩存-更新策略-三大緩存問題

緩存&#xff1a;數據交換的緩沖區&#xff0c;存儲的數據的臨時地方&#xff0c;讀寫性能較高。 步驟&#xff1a; 先從redis里面查詢 緩存命中&#xff1a;直接返回結果緩存未命中 從數據庫里面查詢 沒有數據&#xff1a;返回null有數據&#xff1a;存到redis里面&#xff…

[TriCore] 01.QEMU 虛擬化 TriCore 架構中的寄存器 指令

目錄 1.寄存器宏 - FIELD() 2.寄存器操作 - FIELD_SETTER() & FIELD_GETTER() 3.指令輔助方法 - HELPER() 3.1.輔助宏 3.2.指令示例 3.3.函數調用 4.PSW 寄存器讀寫 - psw_read() & psw_write() 1.寄存器宏 - FIELD() FIELD() 宏定義寄存器 MASK // include/hw…

《軟件工程》第 4 章 - 需求獲取

在軟件工程中&#xff0c;需求獲取是挖掘用戶真實需求的關鍵步驟&#xff0c;它為后續的設計、開發和測試提供堅實基礎。本章將圍繞需求獲取的流程、方法及工具展開&#xff0c;結合實際案例與 Java 代碼&#xff0c;深入講解這一重要環節。 4.1 軟件需求的初始表示 4.1.1 用例…

react diff 算法

diff 算法作為 Virtual DOM 的加速器&#xff0c;其算法的改進優化是 React 整個界面渲染的基礎和性能的保障&#xff0c;同時也是 React 源碼中最神秘的&#xff0c;最不可思議的部分 diff 算法會幫助我們就算出 VirtualDOM 中真正變化的部分&#xff0c;并只針對該部分進行原…

Gin項目腳手架與標配組件

文章目錄 前言設計思想和原則? 技術棧視頻實況教程sponge 內置了豐富的組件(按需使用)幾個標配常用組件主要技術點另一個參考鏈接 前言 軟件和汽車一樣&#xff0c;由多個重要零部件組裝而成。 本文堆積了一些常用部件&#xff0c;還沒來得及好好整理。先放著。 神兵利器雖多…

【Webtrees 手冊】第 10章 - 用戶體驗

Webtrees 手冊/用戶體驗 < Webtrees 手冊 跳轉到導航跳轉到搜索 信息 手冊部分仍在建設中 請耐心等待或隨意貢獻自己的力量:-)。 第 10 章 - 用戶體驗 <- 章節概述 目錄 1多位系譜學家的合作 1.1家庭研究模型1.2“孤膽戰士”模型1.3示范“本地家庭書”1.4模特“俱樂部”…

Linux 進程概念(下)

目錄 前言 4.進程狀態 一.普遍的操作系統層面上宏觀概念&#xff1a; 二.具體的Linux操作系統的狀態&#xff1a; 5.進程優先級&#xff08;了解&#xff09; 6.其他概念 進程切換 前言 本篇是接著上一篇的內容繼續往下了解進程相關的一些概念&#xff01; 4.進程狀態 運…

使用java實現word轉pdf,html以及rtf轉word,pdf,html

word,rtf的轉換有以下方案&#xff0c;想要免費最靠譜的是LibreOffice方案, LibreOffice 是一款 免費、開源、跨平臺 的辦公軟件套件&#xff0c;旨在為用戶提供高效、全面的辦公工具&#xff0c;適用于個人、企業和教育機構。它支持多種操作系統&#xff08;Windows、macOS、…

IP證書的作用與申請全解析:從安全驗證到部署實踐

在網絡安全領域&#xff0c;IP證書&#xff08;IP SSL證書&#xff09;作為傳統域名SSL證書的補充方案&#xff0c;專為公網IP地址提供HTTPS加密與身份驗證服務。本文將從技術原理、應用場景、申請流程及部署要點四個維度&#xff0c;系統解析IP證書的核心價值與操作指南。 一…

GitLab 18.0 正式發布,15.0 將不再受技術支持,須升級【三】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

超簡單Translation翻譯模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻譯模型可以實現200多種語言翻譯&#xff0c;Helsinki-NLP/opus-mt-en-zh是其中英互譯模型。由于項目需要&#xff0c;在本地進行搭建&#xff0c;并記錄下搭建過程&#xff0c;方便后人。 1. 基本硬件環境 CPU&#xff1a;N年前的 Intel…

Go語言JSON 序列化與反序列化 -《Go語言實戰指南》

JSON&#xff08;JavaScript Object Notation&#xff09;是一種常見的數據交換格式。Go 標準庫提供了 encoding/json 包&#xff0c;用于方便地將結構體與 JSON 之間互轉。 一、序列化&#xff08;Marshal&#xff09; 將 Go 中的數據結構&#xff08;如結構體、map、slice 等…

免費PDF工具-PDF24V9.16.0【win7專用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取碼: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

網絡 :序列和反序列化

網絡 &#xff1a;序列和反序列化 &#xff08;一&#xff09;序列和反序列 概念&#xff08;二&#xff09;實例1. 封裝socket 接口2. 制定協議&#xff08;用于實現序列和反序列化&#xff09;3. 計算(實現計算器功能)4. 服務器(將上面所有的類功能調用起來)5. 服務端6.客戶端…

LiveQing 視頻點播流媒體 RTMP 推流服務功能:搭建 RTMP 視頻流媒體服務詳細指南

LiveQing視頻點播流媒體RTMP推流服務功能&#xff1a;搭建RTMP視頻流媒體服務詳細指南 一、流媒體服務搭建二、推流工具準備三、創建鑒權直播間四、獲取推流地址五、配置OBS推流六、推流及播放七、獲取播放地址7.1 頁面查看視頻源地址7.2 接口查詢 八、相關問題解決8.1 大疆無人…