[ linux-系統 ] 命令行參數 | 環境變量

命令行參數

命令行參數是指用戶在啟動程序時通過命令行傳遞給程序的參數。這些參數可以用于控制程序的行為、傳遞輸入數據或配置選項。

在 C/C++ 中,命令行參數通過?main?函數的參數傳遞

命令行參數列表? ??argc:參數的個數? argv[]:參數的清單

為什么要有它?看以下代碼及運行結果

我們用的指令后面為什么可以帶選項,帶選項運行結果就不一樣,這就是通過命令行參數實現的

同一個程序,可以根據選項的不同,表現出不同的功能

環境變量

在main函數中可以有三個參數,前兩個講過了,第三個參數是環境變量

常見環境變量

PATH

為什么我們編譯的代碼不能直接寫code必須待帶./code表示當前路徑的文件

而系統的指令就不用帶./

系統的指令不用帶./,因為系統默認在/usr/bin目錄里找,系統的指令已經在usr/bin目錄里了
為什么系統知道命令在/usr/bin路徑下?

因為環境變量PATH,告訴了shell應該去哪一個路徑下查指令

查看PATH

?PATH是指定路徑的集合,系統可執行文件的搜索集合

如果我不想帶路徑,讓我的程序運行起來?

1. cp /usr/bin

2.把自己的路徑,添加到PATH中

我們把xshell關掉再重新打開,看看PATH會不會變

發現我們改過的PATH又回到初始狀態了,這說明環境變量PATH是內存級別的。那么最開始環境變量的內容是從哪里來的--開始都是在系統配置文件中的

我們登陸xshell,啟動一個xshell進程->讀取用戶和系統相關環境變量的配置文件->形成自己的環境變量表

配置文件在家目錄里 .bashrc? .bach_profile

?

我們在配置文件中,PATH加上我們的路徑,這樣我們即使關掉xshell再打開,我們的路徑在PATH中也不會消失了。

HOME

當前路徑對應的家目錄

發現用戶身份變化,同一個HOME變量,但是環境變量的內容是不一樣的

是默認在我的家目錄下才設置的環境變量,還是先讀取環境變量,把我當前的用戶設置進當前的默認路徑呢?

當我們登陸的時候,先創建bash,bash讀取環境變量配置文件->PATH,HOME已經被設置好了,bash也是一個進程也有自己的cwd,環境變量HOME就是用戶登陸時的cwd

獲取環境變量

getenv()

PWD是保存進程所在的工作路徑的,進程能獲得自己所在的路徑

可以寫一個程序只讓某一個用戶進行訪問

sunhao用戶可以正常訪問

切換到root,不可以訪問

環境變量的導入刪除和驗證

shell中既有本地變量又有環境變量

set可以查到本地變量以及環境變量的信息

?使用export命令設置新的環境變量。

刪除環境變量

unset?

本地變量和環境變量都是bash進程維護的字符串

?本地變量不會子進程被繼承,環境變量會被子進程繼承

下面代碼驗證環境變量會被子進程繼承

最開始ISRUNNING=1,ISRUNNING在本地變量中,子進程不能繼承

后來把ISRUNNING? export導入環境變量中,子進程可以繼承

?上面代碼確實驗證了環境變量可以被bash的子進程繼承,那么子進程再fork()出來的子進程也會繼承環境變量嗎?可以的。這就說明環境變量具有"全局屬性"

為什么?

1.系統的配置信息,尤其是具有指導性的配置信息,他是系統配置起效的一種表現

2.進程具有獨立性,環境變量可以用來進程間傳遞數據(只讀數據)

第三方變量environ獲取環境變量

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

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

相關文章

新書速覽|鴻蒙HarmonyOS NEXT開發之路 卷2:從入門到應用篇

《鴻蒙HarmonyOS NEXT開發之路 卷2:從入門到應用篇》 01 本書內容 《鴻蒙HarmonyOS NEXT開發之路 卷2:從入門到應用篇》是一本深度聚焦HarmonyOS NEXT應用開發的全方位指導書,內容遵循由淺入深的原則展開。全書分為基礎知識、應用開發進階和…

經典密碼學和現代密碼學的結構及其主要區別(1)凱撒密碼——附py代碼

密碼學是一門通過使用代碼和密碼來保護信息的藝術與科學,其歷史可以追溯到數千年前。古典密碼學代表了這一古老學科早期的篇章。早在計算機和現代加密算法出現之前,歷史上的各個文明就依靠巧妙的方法來保護機密、安全通信以及獲取戰略優勢。 古典密碼學…

Python60日基礎學習打卡D30

回顧: 導入官方庫的三種手段導入自定義庫/模塊的方式導入庫/模塊的核心邏輯:找到根目錄(python解釋器的目錄和終端的目錄不一致) # 直接導入 from random import randint print(randint(1, 10)) # 導入自定義庫 import module m…

Linux利用多線程和線程同步實現一個簡單的聊天服務器

1. 概述 本文實現一個基于TCP/IP的簡單多人聊天室程序。它包含一個服務器端和一個客戶端:服務器能夠接收多個客戶端的連接,并將任何一個客戶端發來的消息廣播給所有其他連接的客戶端;客戶端則可以連接到服務器,發送消息并接收來自…

ubuntu系統 | dify+ollama+deepseek搭建本地應用

1、安裝 Ollama 下載并安裝 Ollama (llm) wangqiangwangqiang:~$ curl -fsSL https://ollama.ai/install.sh | bash >>> Installing ollama to /usr/local >>> Downloading Linux amd64 bundle0.3% curl -fsSL https://ollama.ai/install.sh (下…

從紙質契約到智能契約:AI如何改寫信任規則與商業效率??——從智能合約到監管科技,一場顛覆傳統商業邏輯的技術革命

一、傳統合同的“低效困境”:耗時、昂貴、風險失控 近年來,全球商業環境加速向數字化轉型,但合同管理卻成為企業效率的“阿喀琉斯之踵”。據國際商會(International Chamber of Commerce)數據顯示,全球企業…

【機器學習|學習筆記】基于生成對抗網絡的孿生框架(GAN-based Siamese framework,GSF)詳解,附代碼。

【機器學習|學習筆記】基于生成對抗網絡的孿生框架(GAN-based Siamese framework,GSF)詳解,附代碼。 【機器學習|學習筆記】基于生成對抗網絡的孿生框架(GAN-based Siamese framework,GSF)詳解,附代碼。 文章目錄 【機器學習|學習筆記】基于生成對抗網絡的孿生框架(G…

UEFI Spec 學習筆記---33 - Human Interface Infrastructure Overview---33.2.6 Strings

33.2.6 Strings UEFI 環境中的 string 是使用 UCS-2 格式定義,每個字符由 16bit 數據表示。對于用戶界面,strings 也是一種可以安裝到 HIIdatabase 的一種數據。 為了本土化,每個 string 通過一個唯一標識符來識別,而每一個標識…

Stable Diffusion 學習筆記02

模型下載網站: 1,LiblibAI-哩布哩布AI - 中國領先的AI創作平臺 2,Civitai: The Home of Open-Source Generative AI 模型的安裝: 將下載的sd模型放置在sd1.5的文件內即可,重啟客戶端可用。 外掛VAE模型&#xff1a…

并發編程(5)

拋異常時會釋放鎖。 當線程在 synchronized 塊內部拋出異常時,會自動釋放對象鎖。 public class ExceptionUnlockDemo {private static final Object lock new Object();public static void main(String[] args) {Thread t1 new Thread(() -> {synchronized …

貴州某建筑物擋墻自動化監測

1. 項目簡介 某建筑物位于貴州省某縣城區內,靠近縣城主干道,周邊配套學校、醫院、商貿城。建筑物臨近鳳凰湖、芙蓉江等水系,主打“湖景生態宜居”。改建筑物總占地面積:約5.3萬平方米;總建筑面積:約15萬平…

6個月Python學習計劃:從入門到AI實戰(前端開發者進階指南)

作者:一名前端開發者的進階日志 計劃時長:6個月 每日學習時間:2小時 覆蓋方向:Python基礎、爬蟲開發、數據分析、后端開發、人工智能、深度學習 📌 目錄 學習目標總覽每日時間分配建議第1月:Python基礎與編…

【FAQ】HarmonyOS SDK 閉源開放能力 —Vision Kit (3)

1.問題描述: 通過CardRecognition識別身份證拍照拿到的照片地址,使用該方法獲取不到圖片文件,請問如何解決? 解決方案: //卡證識別實現頁,文件名為CardDemoPage,需被引入至入口頁 import { …

AI全域智能監控系統重構商業清潔管理范式——從被動響應到主動預防的監控效能革命

一、四維立體監控網絡技術架構 1. 人員行為監控 - 融合人臉識別、骨骼追蹤與RFID工牌技術,身份識別準確率99.97% - 支持15米超距夜間紅外監控(精度0.01lux) 2. 作業過程監控 - UWB厘米級定位技術(誤差<0.3米&…

安全強化的Linux

SElinux簡介 SELinux是security-Enhanced Linux的縮寫,意思是安全強化的linux SELinux主要由美國國家安全局(NSA)開發,當初開發的目的是為了避免資源的誤用。傳統的訪問控制在我們開啟權限后,系統進程可以直接訪問 當我們對權限設置不嚴謹時,這種訪問方式就是系統的安全漏洞 在…

機器學習第十六講:K-means → 自動把超市顧客分成不同消費群體

機器學習第十六講:K-means → 自動把超市顧客分成不同消費群體 資料取自《零基礎學機器學習》。 查看總目錄:學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章:DeepSeek R1本地與線上滿血版部署:超詳細手把手指南 K-me…

spring中yml配置上下文與tomcat等外部容器不一致問題

結論:外部優先級大于內部 在 application.yml 中配置了: server:port: 8080servlet:context-path: /demo這表示你的 Spring Boot 應用的上下文路徑(context-path)是 /demo,即訪問你的服務時,URL 必須以 /d…

論文研讀——《AnomalyGPT:使用大型視覺語言模型檢測工業異常》

這篇論文提出了 AnomalyGPT,一個基于大型視覺語言模型的工業異常檢測框架,首次將通用多模態對話能力引入工業視覺場景,通過引入圖像解碼器增強像素級感知,設計 Prompt 學習器實現任務自適應控制,并利用合成異常樣本解決…

供應鏈安全檢測系列技術規范介紹之一|軟件成分分析

軟件成分分析的概念及意義 軟件成分分析Software Compostition Analysis(SCA)是一種用于管理開源組件應用安全的方法。軟件成分分析系統可以快速跟蹤和分析應用軟件的開源組件,發現相關組件、支持庫以及它們之間直接和間接依賴關系&#xff0…

conda更換清華源

1、概覽 anaconda更換速度更快、更穩定的下載源,在linux環境測試通過。 2、conda源查看 在修改之前可以查看下現有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源舉例&am…