環境變數,簡單來說就是描述程式執行環境的一組變數,
1、什么程式執行環境?
環境已經基礎詞匯呢,我們通常都用環境去解釋別的詞,想一下,日常生活怎么用環境,你到一個新地方,我問你環境怎么樣?你會回答我,天氣怎么樣,溫度怎么樣,等,那么你可以告訴我,在一個新地方,我問你環境怎么樣,你依然告訴我,天氣怎么樣,溫度怎么樣,可以看出來天氣和溫度是兩個變數,天氣=優,溫度=適中,就描述了一種幻覺,天氣=差,溫度=高,又描述了另一種環境,回想計算機環境變數是否也以這種形式出現呢?最常見的環境變數PATH=“”,該變數的作用是你在命令列工具輸入一個命令默認搜索路徑,你裝完python,在命令列輸入python不配置環境的話就會出現command not found,那么你可以將python解釋器,移動到PATH后面對應的目錄,或者將python的現有的路徑添加到PATH后面,例如
PATH=$PATH:python對應的路徑
如果直接寫PATH=python對應的路徑,他會覆寫掉以前的值,此時你執行其他命令時,他會報錯,因為現在默認的搜索路徑是你的python路徑,里面是沒有那些命令的,$后面加變數意思是取他的值的意思,意思就是把原本的PATH的值取了在續上你新加的,
Linux env命令可以列出所有環境變數,每個變數都他的作用慢慢介紹,
sunwei@sunweideMacBook-Pro ~ % env __CFBundleIdentifier=com.apple.Terminal TMPDIR=/var/folders/sd/wf3y8tsn0d7c8l9vkvk7bt_h0000gn/T/ XPC_FLAGS=0x0 TERM=xterm-256color SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.EckTgDvpAA/Listeners XPC_SERVICE_NAME=0 TERM_PROGRAM=Apple_Terminal TERM_PROGRAM_VERSION=445 TERM_SESSION_ID=CDA5986B-000C-48A3-BBD0-D708523A6094 SHELL=/bin/zsh HOME=/Users/sunwei LOGNAME=sunwei USER=sunwei PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin SHLVL=1 PWD=/Users/sunwei OLDPWD=/Users/sunwei LANG=zh_CN.UTF-8 _=/usr/bin/env
2、什么是命令?
相信上面的介紹會讓你似懂非懂,接下來詳細介紹什么是命令,當你理解了什么命令后,你會對環境命令有更深刻的認識,命令其實就是一個可執行程式,Linux可執行程式基本是以ELF結構存盤,你寫的一個c編譯后生成的a.out也可以是命令,執行的時候是不是./a.out, ‘.’在Linux系統代表是當前路徑,意思就是當前路徑搜索a.out,就執行了,想想上面介紹的PATH變數是干嘛的,如果我想直接輸入a.out就能執行,應該怎么做?(聰明的你應該能想到,文末揭曉),下面介紹一個命令是怎么運行起來的,
作業系統是一個大的可執行程式,開機以后作業系統(作業系統啟動也有很多細節)就開始運行了,圖形化作業系統啟動后,運行的第一個程式就是桌面程式,非圖形化作業系統第一個啟動的程式就是命令列工具,命令列工具有很多,可以根據自己的喜好配置,常見的會啟動一個bash,bash也是一個程式,那么上面提到,程式運行就會有環境變數控制他的環境,他的環境變數被存盤在~/.bash_profile檔案中,bash啟動時就會讀取里面的配置設定環境變數,啟動完畢后,就一直在執行bash程式,等到你的輸入,當你輸入一個命令時,他會去PATH路徑下搜索該命令,此時如果你輸入的不是命令,直接輸入PATH=‘’,或者更改其他環境變數,或許你聽過這樣的話,每個行程都有自己的獨立的運行環境,當你輸入一個命令時,是一個可執行程式,應該是啟動了一個新的行程,怎么會影響你后續執行的程式呢?因為bash開始運行,他一直在等待你的輸入,你輸入的命令啟動程式創建的行程都是bash的子行程,創建行程系統呼叫是fork,叉子的意思,他會把父行程完完全全復制一份,包括執行時環境,因此你設定新值后,后續啟動的程式環境都被改變了,但是當你關閉bash再次啟動你剛才改的就恢復,如果想永久有效,更改.bash_profile檔案即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/509102.html
標籤:Linux
上一篇:LRTimelapse for Mac(專業延時攝影渲染工具)
下一篇:mysql二進制安裝腳本部署
