2015-02-24

Ubuntu 查詢全部環境變數

阿舍之前一直都以為,Ubuntu / Linux 的環境變數就是用 export 指令所顯示出來的那幾個,直到最近阿舍在研究 history 和 shopt 這兩個指令的時候才發現,原來,這個 Ubuntu 的環境變數不只有 export 看到的那些,還有一大部分是 Bash Shell 在用的變數,調整這些變數就可以改變 Bash Shell 的一些運作方式哩 !


不過,阿舍今天不是要來介紹這些 Bash Shell 內建的變數們,而是要來介紹如何 看見 它們哩 ! 這些 Bash Sell 的變數是用 export 或是 printenv 指令都查不出來的,而是要用 set 指令才會看到包含 Bash Sell 內建變數在內的所有變數哩 ! ...

用 declare 指令可以看到變數屬性

用下面的指令就可以看到所有的變數,但是,有一個小小的問題,那個就是,用 set 指令來看的話,會連定義在記憶體中函式的程式碼都會一併的被顯示出來,可是,阿舍對那些函式並不是那麼有興趣哩 ! 阿舍只想查一下,目前全部的變數的設定情形哩 !

set | less

所以,阿舍就再去找到一個 declare 的指令來用,這個 declare 指令可以用來宣告變數,也可以用來依不同的選項來顯示指定類型的環境變數,如果不給任何的選項給 declare 指令的話,效果就和直接執行 set 指令相同,而以阿舍只想看環境變數,不想看到函式的話,那就用下面這一行的指令來查就可以了。

declare -p | more

另外,相反的,如果是你只想看目前有定義了那些函式的話,則是可以用下面第一行的指令來查看所有的函式名稱,然後,如果你還想看看這些函式的程式碼的話,那就要用下面第二行的指令來看囉 !

declare -F | more 
declare -f | more

阿舍上面有提到,這個 declare 指令除了可以用來查詢之外,也可以用來定義變數,尤其是要設定成不可變更的唯讀變數的時候,用這個 declare 指令加上 -r 選項就可以達到想要的效果了哩 !

# 定義 ayu 為唯讀變數
$declare -r ayu=arthuryu 

$echo 
$ayu 
arthuryu 

# 試著變更 ayu 變數會得到錯誤訊息 ... 
$ ayu='Arthur Yu' 
-bash: ayu: readonly variable


推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁