linux 環(huán)境變量- -
系統(tǒng)變量是一個(gè)有名稱的物件,包含一個(gè)或多個(gè)程式要用的資訊。許多使用者(特別是 Linux 新手)覺(jué)得這有一些古怪而且難以管理。這想法有一些錯(cuò)誤:使用者可以用系統(tǒng)變量輕鬆的改變一個(gè)或多個(gè)程式設(shè)定。 下面的表格顯示許多 Linux 使用的變量以及它們的用途。範(fàn)例在表格後面展示。 變量 說(shuō)明 底下是所有的變量的設(shè)定範(fàn)例: 原始碼一覽表 1: Example definitions
5.b. 定義全域變量 /etc/env.d 目錄 為了要集中管理這些變量的設(shè)定,Gentoo 使用 /etc/env.d 目錄。在目錄中您會(huì)發(fā)現(xiàn)許多檔案,例如 00basic,05gcc 等。這裡面包含檔案名稱中所提到的程式需要用的變量。 例如,當(dāng)您安裝 gcc 後,ebulid 會(huì)建立一個(gè)叫做 05gcc 的檔案,包含下面的變量設(shè)定: 原始碼一覽表 2: /etc/env.d/05gcc
其他的 Linux 套件會(huì)告訴您在 /etc/profile 或其他地方新增這些變量。 Gentoo 則讓您很容易(對(duì) Portage 也是)去管理這些變量而不用注意其他設(shè)定系統(tǒng)變量的檔案。 舉例來(lái)說(shuō),當(dāng) gcc 更新了之後,/etc/env.d/05gcc 也會(huì)同時(shí)被更新而使用者不必做任何事。 這不僅對(duì) Portage 有好處,對(duì)使用者也是。您或許偶爾會(huì)被要求設(shè)定一些系統(tǒng)變量。拿 http_proxy 做例子。您不用弄亂 /etc/profile,只要建立一個(gè)檔案( /etc/env.d/99local )然後在裡面輸入設(shè)定: 原始碼一覽表 3: /etc/env.d/99local
藉著將您自己的變量設(shè)定放到這個(gè)檔案中,您可以很快找到哪些變量是您自己設(shè)定的。 env-update 指令稿 在 /etc/env.d 中的數(shù)個(gè)檔案同時(shí)定義了 PATH 變量。這並沒(méi)有錯(cuò):當(dāng)您執(zhí)行 env-update,他會(huì)把數(shù)個(gè)設(shè)定同時(shí)加到系統(tǒng)設(shè)定中,因此讓軟體套件(或使用者)加入他們自己的設(shè)定而不會(huì)干擾已經(jīng)存在的設(shè)定。 env-update 指令稿將會(huì)以 /etc/env.d 中的檔案名稱以字母順序依序加入系統(tǒng)設(shè)定中。這就是為什么這裡面的許多檔案以數(shù)字開(kāi)頭。 原始碼一覽表 4: env-update 的新增順序
當(dāng)您執(zhí)行 env-update,他會(huì)建立所有的系統(tǒng)變量然後寫(xiě)入 /etc/profile.env 中(這檔案被 /etc/profile 使用)。他也會(huì)從 LDPATH 讀取資訊然後建立 /etc/ld.so.conf,之後,他會(huì)執(zhí)行 ldconfig 重新建立動(dòng)態(tài)連結(jié)使用的 /etc/ld.so.cache 檔案。 如果您希望 env-update 在您執(zhí)行它後立刻作用,執(zhí)行下面的指令來(lái)更新。自行安裝 Gentoo 的使用者可能會(huì)記得安裝過(guò)程中執(zhí)行過(guò): 原始碼一覽表 5: 更新環(huán)境變量
5.c. 定義局部變量 使用者自行設(shè)定 您或許不想要定義全域變量。例如您可能要加入 /home/my_user/bin 到 PATH 變量中,但是您不想要其他使用者在他們的 PATH 也有這個(gè)設(shè)定。如果您想要定義區(qū)域變量,您可以加到 ~/.bashrc 或 ~/.bash_profile: 原始碼一覽表 6: 在 ~/.bashrc 中額外增加局部 PATH 設(shè)定
當(dāng)您重新登入後,您的 PATH 變量就會(huì)更新了。 有期限的設(shè)定 有的時(shí)候需要更嚴(yán)格的定義。例如您可能需要從您剛剛建立的暫時(shí)目錄執(zhí)行程式,但您不想輸入完整的路徑或是編輯 ~/.bashrc 只為了在這一小段時(shí)間使用。 在這種情況下,您只要使用 export 指令設(shè)定 PATH 變量。只要您不登出, PATH 將會(huì)使用目前暫時(shí)的設(shè)定。 原始碼一覽表 7: 設(shè)定有期限的變量 |
|