中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

寧波網(wǎng)站建設公司軟文范例大全1000字

寧波網(wǎng)站建設公司,軟文范例大全1000字,西部數(shù)碼網(wǎng)站開發(fā)管理助手,wordpress替代軟件【Linux進程篇】環(huán)境變量 目錄 【Linux進程篇】環(huán)境變量基本概念常見環(huán)境變量查看環(huán)境變量方法測試PATH測試HOME測試SHELL和環(huán)境變量相關的命令環(huán)境變量的組織方式通過代碼如何獲取環(huán)境變量命令行參數(shù)命令行第三個參數(shù)通過第三方變量environ獲取 本地變量通過系統(tǒng)調用獲取或設置…

【Linux進程篇】環(huán)境變量

目錄

  • 【Linux進程篇】環(huán)境變量
      • 基本概念
      • 常見環(huán)境變量
      • 查看環(huán)境變量方法
      • 測試PATH
      • 測試HOME
      • 測試SHELL
      • 和環(huán)境變量相關的命令
      • 環(huán)境變量的組織方式
      • 通過代碼如何獲取環(huán)境變量
        • 命令行參數(shù)
          • 命令行第三個參數(shù)
          • 通過第三方變量environ獲取
      • 本地變量
      • 通過系統(tǒng)調用獲取或設置環(huán)境變量
      • 環(huán)境變量通常是具有全局屬性的
      • 驗證子進程會繼承父進程的環(huán)境變量
      • 驗證子進程不會繼承父進程的本地變量

作者:愛寫代碼的剛子
時間:2023.8.13
前言:本篇博客主要介紹操作系統(tǒng)中環(huán)境變量有關的知識,了解環(huán)境變量有關的指令。

基本概念

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

常見環(huán)境變量

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

查看環(huán)境變量方法

  • echo $NAME //NAME:你的環(huán)境變量名稱
    在這里插入圖片描述

測試PATH

添加PATH

  • 注意不能寫做:PATH=新路徑名稱,否則之前的PATH將會全部清空
    正確寫法:
    在這里插入圖片描述
    直接運行test.exe文件:
    在這里插入圖片描述

此環(huán)境變量是內(nèi)存級別的,當用戶如果不小心改錯了重新登陸Xshell即可。(系統(tǒng)文件中已經(jīng)預存好了環(huán)境變量)

測試HOME

用root和普通用戶,分別執(zhí)行 echo $HOME ,對比差異
在這里插入圖片描述
在這里插入圖片描述

測試SHELL

在這里插入圖片描述
保存的是當前shell的可執(zhí)行程序
. 執(zhí)行 cd ~ ; pwd,對應~ 和 HOME 的關系

和環(huán)境變量相關的命令

  1. echo: 顯示某個環(huán)境變量值
  2. export: 設置一個新的環(huán)境變量
  3. env: 顯示所有環(huán)境變量
    在這里插入圖片描述
  • HISTSIZE Xshell能記錄的最大歷史指令條數(shù)
  • USER當前用戶
  • LD_LIBRARY_PATH指定查找共享庫(動態(tài)鏈接庫)時除了默認路徑之外的其他路徑。
  • PATH可執(zhí)行程序的搜索路徑
  • LS_COLORS ls的配色方案
  • MAIL是指當前用戶的郵件存放目錄。
  • PWD當前所處的路徑
  • LANG用于定義系統(tǒng)的主語系環(huán)境
  • HISTCONTROL可以控制歷史的記錄方式
  • HOME用戶的主目錄(也稱家目錄)
  • SHLVL記錄了bash嵌套的層次,一般來說,我們啟動第一個Shell時。 $SHLVL=1。如果在這個Shell中執(zhí)行腳本,腳本中的 $SHLVL=2 。
  • LOGNAME LOGNAME
  • LESSOPEN
  1. unset: 清除環(huán)境變量(unset +環(huán)境變量名)
  2. set: 顯示本地定義的shell變量和環(huán)境變量

環(huán)境變量的組織方式

請?zhí)砑訄D片描述
每個程序都會收到一張環(huán)境表,環(huán)境表是一個字符指針數(shù)組,每個指針指向一個以’\0’結尾的環(huán)境字符串

通過代碼如何獲取環(huán)境變量

命令行參數(shù)

main函數(shù)并不是第一個被調用的函數(shù),而是startup函數(shù)
編譯器如何知道m(xù)ain函數(shù)的參數(shù)個數(shù)?(答:條件編譯)
在這里插入圖片描述

在這里插入圖片描述

  • argc就是argv數(shù)組中的元素個數(shù),argv指針數(shù)組也叫向量表
  • 輸入./test -a -b其實是"./test -a -b",bash會將其分成三個字符串"./test" “-a” “-b”,將這些字符串初始化argv指針*數(shù)組
  • 命令行參數(shù)可以為指令、工具、軟件提供功能選項支持(指令可以帶不同的選項和命令行參數(shù)有關
    在這里插入圖片描述
命令行第三個參數(shù)

C/C++代碼會有兩張核心向量表:(1. 命令行參數(shù)表,2. 環(huán)境變量表),不要簡單理解程序啟動就是將進程加載到內(nèi)存,而是自己的程序在啟動時,需要有人調用main函數(shù),將這兩張核心向量表傳進來
在這里插入圖片描述

在這里插入圖片描述

  • 我們所運行的進程,都是子進程,bash本身在啟動的時候會從操作系統(tǒng)的配置文件中讀取環(huán)境變量信息,子進程會繼承父進程交給我們的環(huán)境變量,我們定好的環(huán)境變量可以讓所有的子進程繼承下去,所以環(huán)境變量具有全局屬性
  • 但是注意!環(huán)境變量也是數(shù)據(jù),默認情況下是父子共享的,由于進程具有獨立性,創(chuàng)建完子進程后,如果想對環(huán)境變量進行修改,是不能影響父進程的,因為會寫實拷貝

環(huán)境變量被繼承通常有兩種方式:1. 直接繼承 2. main函數(shù)傳參

通過第三方變量environ獲取
#include <stdio.h>
int main(int argc, char *argv[])
{extern char **environ;int i = 0;for(; environ[i]; i++){printf("%s\n", environ[i]);}return 0;
}

在這里插入圖片描述

libc中定義的全局變量environ指向環(huán)境變量表,environ沒有包含在任何頭文件中,所以在使用時要用extern聲明。

程序在編譯過程中會鏈接C庫, 所以, extren本身就是說我有一個什么樣子的變量, 然后在鏈接的過程當中在 C庫可以找到這個是正常的。

本地變量

  • 直接在命令行定義的變量叫做本地變量:
    在這里插入圖片描述
  • set查看本地變量和環(huán)境變量
    在這里插入圖片描述

在這里插入圖片描述

本地變量是不會被子進程繼承的

通過系統(tǒng)調用獲取或設置環(huán)境變量

  • putenv("環(huán)境變量=value")

  • getenv("環(huán)境變量")
    在這里插入圖片描述
    在這里插入圖片描述

  • 可以通過比較getenv(“USER”)來判斷登陸用戶是不是正確的,和權限建立起連接

常用getenv和putenv函數(shù)來訪問特定的環(huán)境變量。

環(huán)境變量通常是具有全局屬性的

  • 環(huán)境變量是系統(tǒng)提供的一組name=value形式的變量,不同的環(huán)境變量有不同的用戶,通常具有全局屬性。
  • 環(huán)境變量通常具有全局屬性,可以被子進程繼承下去

驗證子進程會繼承父進程的環(huán)境變量

  • 導入環(huán)境變量:
    在這里插入圖片描述
  • 運行test:
    在這里插入圖片描述
    子進程是可以繼承父進程的環(huán)境變量的

驗證子進程不會繼承父進程的本地變量

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

在這里插入圖片描述
雖然子進程不會繼承父進程的本地變量,但是我們可以向子進程中導入父進程的本地變量
在這里插入圖片描述

【問題】:echo也是bash的子進程,那為什么echo能拿到并顯示父進程的本地變量呢?

在這里插入圖片描述
答:命令行上的指令并不一定都需要創(chuàng)建子進程,所以命令分為兩種命令:

  • 常規(guī)命令——通過子進程創(chuàng)建來完成
  • 內(nèi)建命令——bash不創(chuàng)建子進程,而是由自己親自執(zhí)行,類似于bash調用自己的寫的,或者系統(tǒng)提供的函數(shù)(cd指令、echo指令)

所以echo是內(nèi)建命令,自己獲取自己的本地變量,不創(chuàng)建子進程

【附】:
chdir函數(shù)用于改變當前工作目錄。調用參數(shù)是指向目錄的指針,調用進程需要有搜索整個目錄的權限。每個進程都具有一個當前工作目錄。在解析相對目錄引用時,該目錄是搜索路徑的開始之處。如果調用進程更改了目錄,則它只對該進程有效,而不能影響調用它的那個進程。在退出程序時,shell還會返回開始時的那個工作目錄。


http://www.risenshineclean.com/news/28530.html

相關文章:

  • 大連企業(yè)做網(wǎng)站最新軍事新聞 今日 最新消息
  • 婚戀網(wǎng)站女孩子做美容安卓優(yōu)化大師官方版
  • 保定定興網(wǎng)站建設對百度競價排名的看法
  • 織夢的手機端網(wǎng)站網(wǎng)站開發(fā)的步驟
  • 食品網(wǎng)站建設策劃書百度問答庫
  • 網(wǎng)站沒有備案可以做百度推廣嗎最吸引人的引流話術
  • 青島網(wǎng)站運營推廣關鍵詞排名方案
  • 合肥建站平臺windows優(yōu)化大師官方免費
  • html網(wǎng)站開發(fā)中的應用百度高級搜索
  • 濟南網(wǎng)站設計建設公司百度營銷推廣登錄平臺
  • 建設資格執(zhí)業(yè)注冊中心網(wǎng)站長沙seo網(wǎng)絡推廣
  • 網(wǎng)站上的搜索怎么做青島網(wǎng)站快速排名提升
  • 網(wǎng)站建設周期重慶seo網(wǎng)絡推廣關鍵詞
  • swf做網(wǎng)站頭網(wǎng)絡促銷
  • 知名商城網(wǎng)站建設公司seo搜狗
  • 東莞設計網(wǎng)站長沙網(wǎng)站優(yōu)化推廣
  • 17網(wǎng)站一起做網(wǎng)店 每日新款網(wǎng)站免費推廣網(wǎng)站
  • 高州做網(wǎng)站seo咨詢茂名
  • 可以免費建手機網(wǎng)站seo優(yōu)化網(wǎng)站
  • 最新網(wǎng)站源碼營銷網(wǎng)站建設方案
  • 武漢市網(wǎng)站制作寧波seo推廣咨詢
  • 網(wǎng)站制作要多少錢線上營銷工具
  • 有域名自己做網(wǎng)站嗎網(wǎng)絡推廣長沙網(wǎng)絡推廣
  • 各省備案網(wǎng)站怎么用模板做網(wǎng)站
  • 手機網(wǎng)站制作代理公關公司排名
  • 廣州官網(wǎng)建設seo搜索優(yōu)化是什么意思
  • 知識付費網(wǎng)站開發(fā)教程百度搜索提交入口
  • 做網(wǎng)站鏈接容易嗎百度手機瀏覽器下載
  • 網(wǎng)頁設計心得體會報告怎么寫怎么理解搜索引擎優(yōu)化
  • 網(wǎng)站制作價格與售后視頻網(wǎng)站seo怎么做