了解登入環境參數設定之前,先瞭解 user login 後所會用到的幾個 script :

/etc/profile --> ~/.bash_profile --> ~/.bashrc --(source)--> /etc/bashrc

登入(login)時
-----------------
先執行 /etc/profile,接著bash會檢查使用者的自家目錄中,是否有 .bash_profile 或者 .bash_login 或者 .profile,
若有,則會執行其中一個,執行順序為:
~/.bash_profile 最優先 , ~/.bash_login 其次 , ~/.profile 最後 (有時會依套件商包裝習慣而不同。)
(這三個檔案只有在登入時,才會被bash讀取)


登出(exit/logout)時
-----------------
bash會檢查使用者自家目錄中是否有 ~/.bash_logout,若有,則bash會執行其中的指令

登入後啟動一個新的 shell :
-----------------
此時我們稱之為一個 subshell, 也就是說在命令列中鍵入 bash, 除了原先登入時的 bash 之外, 又另外啟動了一個新的 bash shell.
bash 會檢查使用者的自家目錄中是否有 ~/.bashrc,若有則予以執行

在 /etc/ 下的 profile 和 bashrc 只有 root 可以設定,也就是說不管誰登入都會套用;
而 ~/.bash_profile ~/.bashrc 是 user 可以自行設定的。

/etc/bashrc 存有整個系統的別名和功能;
/etc/profile 存有整個系統的環境參數和啟動程式;
$HOME/.bash_profile 存有用戶的環境參數和啟動程式;=> 只有在 login shell 中會被執行
$HOME/.bashrc 存有用戶的的別名和功能;=> 在 no-login 的交互式 shell 中被執行

系統變數是一個有名稱的物件,包含一個或多個程式要用的資訊。
許多使用者(特別是 Linux 新手)覺得這有一些古怪而且難以管理。
這想法有一些錯誤:使用者可以用系統變數輕鬆的改變一個或多個程式設定。

下面的表格顯示許多 Linux 使用的變數以及它們的用途。範例在表格後面展示。

 

變數 說明
PATH 這個變數包含用冒號分隔的目錄列表,讓系統尋找可執行檔。如果您輸入一個可執行檔 (例如 lsrc-updateemerge)但是這個檔案不在列表中的 目錄,您的系統不會執行它(除非您輸入完整的路徑,如 /bin/ls)。
ROOTPATH 這個變數和 PATH 有相同功能,但是這裡面包含的目錄是根使用者數入指令時 才會尋找。
LDPATH 這個變數包含以冒號分隔的目錄列表,讓動態連結檔在裡面搜尋函式庫。
MANPATH 這個變數包含以冒號分隔的目錄列表,讓 man 指令搜尋手冊頁。
INFODIR 這個變數包含以冒號分隔的目錄列表,讓 info 搜尋資訊頁。
PAGER 這個變數包含顯示檔案內容的程式路徑(例如 lessmore)。
EDITOR 這個變數包含編輯的程式路徑(例如 nanovi)。
KDEDIRS 這個變數包含以冒號分隔的目錄列表,設定 KDE 的主要路徑。
CLASSPATH 這個變數包含以冒號分隔的目錄列表,設定 Java 程式的路徑。
CONFIG_PROTECT 這個變數包含以空白分隔的目錄列表,這些目錄在 Portage 更新時需要被保護。
CONFIG_PROTECT_MASK 這個變數包含以空白分隔的目錄列表,這些目錄更新 Portage 時不要被保護。


#. 定義局部變數

使用者自行設定

您或許不想要定義全域變數。
例如您可能要加入 /home/my_user/bin 以及目前的工作目錄(你所在的目錄)到 PATH 變數中,但是您不想要其他使用者在他們的 PATH 也有這個設定。
如果您想要定義區域變數,您可以加到 ~/.bashrc 或 ~/.bash_profile:

在 ~/.bashrc 中額外增加局部 PATH 設定(冒號後面什麼都不加代表目前的工作目錄)
PATH="${PATH}:/home/my_user/bin:"

當您重新登入後,您的 PATH 變數就會更新了。

如果不想重新登入又要使用新的環境變數
可以使用 source xxx 引入新環境

有期限的設定

有的時候需要更嚴格的定義。
例如您可能需要從您剛剛建立的暫時目錄執行程式,但您不想輸入完整的路徑或是編輯 ~/.bashrc 只為了在這一小段時間使用。

在這種情況下,您只要使用 export 指令設定 PATH 變數。只要您不登出, PATH 將會使用目前暫時的設定。

 

arrow
arrow
    全站熱搜

    BB 發表在 痞客邦 留言(0) 人氣()