理解及操作環境變量(基於Mac操作)


通過本文,簡單的了解環境變量及其操作,與便於遇到相關問題時能夠准確快捷的解決。

什么是環境變量

An environment variable is a dynamic-named value that can affect the way 
running processes will behave on a computer. --- wikipedia

轉成中文大概就是 " 環境變量是一個動態命名的值,這個值能夠影響計算機如何運行程序" ,接下來根據例子來理解可能會更好~

當用戶在終端里輸入某命令並敲下回車鍵的時候,計算機會在環境變量里指定的路徑下查找這個命令對應的文件,並執行該文件以達到運行用戶所需的程序,比如:

# 查看環境變量
echo $PATH

# 進入指定的路徑下
cd /usr/local/bin

# 查看有哪些node相關的玩意
ls | grep "node"

效果如圖:

打開文件夾,發現node是個可執行的文件,其實該文件里包含着node命令所應有內容:

當用戶在終端執行node命令的時候,通過環境變量,系統將node命令指向該文件夾,並且執行該文件夾中對應的內容以啟動node程序。

為了驗證下,這里將node文件改個名,預測當node改名為node_test后,執行node_test命令則便是執行之前的node程序,下面是驗證結果圖:

# 修改node文件名為node_test
mv node node_test

# 查看有哪些node相關的玩意,發現沒有node,變成了node_test
ls | grep "node"

# 執行node命令,提示沒這命令
node

# 執行node_test,發現和原先node效果一樣,並且能寫代碼,還能查看版本,一切正常
node_test

node_test -v

效果如圖:

通過這么個簡單的例子,大致能夠知道什么是環境變量,也了解了環境變量是用來干什么的,接下來就看看如何去操作以及如何更好的管理環境變量。

配置環境變量

使用執行命令行進行配置

# 暴露個新變量 NEW_PATH
export NEW_PATH=/usr/lib

# 我們可以通過 $NEW_PATH 變量名查看其值
echo $NEW_PATH 

# 將NEW_PATH追加到PATH變量后面,注意:用:符號分割路徑
export PATH=$PATH:$NEW_PATH

效果如圖所示:

結果顯示ok,正確的追加到了$PATH后...

環境變量的臨時修改還可以這么操作,但不推薦,這樣的操作重寫PATH所有內容:

eval PATH=xxx

效果如圖:

基於上面方法添加的環境變量是臨時的,重新打開個終端界面,一切都恢復如初~  那么想要讓配置的環境變量是永久的該怎么處理呢?我們可以使用把要配置的環境變量寫到對應的文件中,系統會在指定的時候執行對應的文件來讀取用戶配置的命令。

使用文件配置環境變量

Mac OS 默認環境變量的配置文件路徑是 /etc/paths ,同時這個文件也是全局的環境變量文件,一般是只讀權限的,需要用管理員賬號來修改權限,然后寫入對應的環境變量值,操作如下:

新開一個終端界面,輸出$PATH,效果如圖:

通過這樣的修改,任何用戶進來這台電腦都可以使用指定的全局環境變量(如:/etc/path_test)。

大多數時候不會使用上面的配置去更改全局環境變量,一般都是針對當前登錄用戶配置的環境變量,那么便應該操作 ~/.bash_profile 

舉個例子,在~/.bash_profile里加個環境變量

# 在 .bash_profile 里輸入
exoprt TEST_PATH=/Users/yeshou
export PATH=$PATH:$TEST_PATH

效果如圖:

Mac下的環境變量操作的小例子大致就這么跑了一遍,至此也大致了解環境變量及其操作流程。

最后,我們順便看看 .bash* 相關都有什么文件:

cd ~
ls -a | grep “bash”

列出來的文件有:

.bash_history (記錄bash命令操作的文件)

.bash_profile (系統在登錄式操作時執行的環境變量配置文件,如啟動系統、遠程登錄、切換用戶)

.bash_sessions (bash會話記錄,這是個文件夾,里面包含了每次使用bash所做的操作的文件列表)

.bashrc (系統在交互式和非登錄式bash shell操作時讀取執行的環境變量配置文件)


平常操作起來都是挺麻溜的,在整理成文章的時候還是會遇到不少問題,這也反映出平常大多停留在使用的階段,沒停下來去思考去理解… 通過寫文章總結和整理知識點,會發現日常的理解或操作很多有不是那么合適的地方,發現后去改正,這樣才會有進步~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM