通過本文,簡單的了解環境變量及其操作,與便於遇到相關問題時能夠准確快捷的解決。
什么是環境變量
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操作時讀取執行的環境變量配置文件)
平常操作起來都是挺麻溜的,在整理成文章的時候還是會遇到不少問題,這也反映出平常大多停留在使用的階段,沒停下來去思考去理解… 通過寫文章總結和整理知識點,會發現日常的理解或操作很多有不是那么合適的地方,發現后去改正,這樣才會有進步~