Linux 環境變量簡介

Linux 和 Windows 系統相似,在安裝許多軟件的時候是需要去配置環境變量。同樣,在 Linux 裏也是需要去配置相應的環境變量。而在 Linux 中的環境變量主要是系統級用戶級,系統級的環境變量是每個登錄到系統的用戶都要讀取的系統變量,而用戶級的環境變量則是用戶使用系統時加載的環境變量。

  • 系統級

    • /etc/profile文件:當用戶登錄時,操作系統爲用戶定製的用於登錄到系統的每個用戶的第一個文件,通常是調用/etc/bash.bashrc 文件。

    • /etc/environment文件:在登錄時操作系統調用的第二個文件,在讀取 profile 之前,系統用於設置環境文件的環境變量。

  • 用戶級(文件主要是在/home目錄下)

    • ~/.profile:每個用戶都可以調用來輸入自己使用的 shell 信息,不過在用戶登錄時,該文件只執行一次。

    • ~/.bashrc: 包含登錄用戶的專用 bash shell 的 bash 信息。也就是說每開一個 shell,該文件都會被讀取一次。

  • 臨時的

    • 針對當前 shell 的環境變量。

簡單來說,環境變量就是指定一個目錄,軟件在運行的時候,相關程序會按照該目錄來查找相關文件。

前面是從系統和用戶級來劃分環境變量。 若按照變量的生存週期來劃分,那麼變量就可以分爲:

  • 永久的:需要修改配置文件,變量永久生效。

  • 臨時的:使用 export 命令來聲明就行,變量在關閉 shell 的時候失效。

若按照環境變量自身的信息來劃分,則可以分爲:

  • 當前 shell 進程私有用戶自定義變量。此時變量只在當前 shell 中有效

  • shell 自身的內建變量

  • 從自定義變量導出的環境變量

變量的設置方法:

 /etc/profile 文件中添加變量(永久的)

用 vim 編輯器編輯 /etc/profile 文件來增加變量,將作用於 Linux 下所有用戶,且具有永久性。(此方法謹慎使用!

修改 ~/.profile 文件(對單一用戶生效(永久的))

這種方法較爲安全,可以把使用這些環境變量的權限控制到用戶級別,主要是針對某一特定的用戶,如果需要給某個用戶權限使用這些環境變量,只需要修改其個人用戶主目錄下的 .profile 文件就可以了。

eg:編輯shiaynlou用戶目錄(/home/shiyanlou)下的 .profile,即 /home/shiyanlou/.profile 文件。

5.2.3 直接運行export命令定義環境變量(臨時的)

在控制檯中設置,不贊成這種方式,這種設置只對當前的 shell 起作用,換一個 shell 設置就無效了。 在 shell 的命令行下直接使用 [export 變量名=變量值] 來定義變量。

在每個用戶的 home目錄中有一個 Shell 每次啓動時會默認執行一個配置腳本,以初始化環境,包括添加一些用戶自定義環境變量等等。zsh 的配置文件是 .zshrc,相應 Bash 的配置文件爲 .bashrc 。它們在 etc 下還都有一個或多個全局的配置文件,不過我們一般只修改用戶目錄下的配置文件。因此在退出當前 shell 後,臨時的自定義環境變量不會在新打開的 shell 中出現。

添加一個自定義的變量

$ export shiyanlou="shiyanlou001"$ echo $shiyanlou

注:使用 echo 輸出變量時需要在變量名前面加 $ 符號

$export shiyanlou="shiyanlou001"

$echo $shiyanlou

image.png


export 命令查看

可以用來顯示從 Shell 中導出成環境變量的變量,也能通過它將自定義變量導出爲環境變量。

可以簡單體會一下,先在 Shell 中設置一個變量 temp=shiyanlou,然後再新創建一個子 Shell 查看 temp 變量的值:

$  ~
$ 
$ 
$ zsh    # 創建子進程,實驗樓環境使用的是 zsh ,ubuntu 默認的 shell 爲bash 
$ 
$  
$  temp
$ 
$

blob.png

echo 命令

例如,我們查看 PATH 環境變量

blob.png

env 命令查看所有的環境變量

可以用來顯示與當前用戶相關的環境變量,還可以讓命令在指定環境中運行。

blob.png

set 命令查看本地定義的環境變量

可以用來顯示當前 Shell所有變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量。

blob.png

使用vimdiff直觀查看環境變量

對於剛纔講到的三種環境變量的查看 :exportenvset 我們還可以通過 vimdiff 工具來直觀的比較它們之間的差別:

$ temp=shiyanlou
$  temp_env=shiyanlou
$ env|sort>env.txt
$ |sort>export.txt
$ |sort>set.txt

命令的輸出是用到了管道| 和用sort命令來排序,將文本文件重定向。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章