簡體   English   中英

Linux:環境變量存儲在哪里?

[英]Linux: where are environment variables stored?

如果我輸入終端,

export DISPLAY=:0.0

...存儲該環境變量的外殼在哪里?

我正在使用 Ubuntu 8.10。 我查看了文件 ~/.profile 和 /etc/profile 並且找不到 DISPLAY 的蹤跡。

進程的環境變量存在於運行時,而不是存儲在某個文件中。 它們存儲在進程自己的內存中(這是發現它們傳遞給子進程的地方)。 但是里面有一個虛擬文件

/proc/pid/environ

這個文件顯示了調用進程時傳遞的所有環境變量(除非進程覆蓋了它的那部分內存——大多數程序沒有)。 內核通過該虛擬文件使它們可見。 可以一一列舉。 比如查看進程3940的變量,可以這樣做

cat /proc/3940/environ | tr '\0' '\n'

每個變量都由與下一個變量的二進制零分隔。 tr 將零替換為換行符。

鍵入“set”,您將獲得所有當前變量的列表。 如果你想保留一些東西,把它放在 ~/.bashrc 或 ~/.bash_profile (如果你使用 bash)

如果您想在系統范圍內使用環境,您可以使用/etc/environment文件來實現。

它存儲在進程(shell)中,並且由於您已導出它,因此會生成任何進程。

執行上述操作不會將其存儲在文件系統中的任何位置,如 /etc/profile.d 。 你必須明確地把它放在那里才能發生。

有 1 個文件可用於存儲環境變量。

.bashrc

您可以添加變量並使用它們。 例如,我添加了 Django virtual env 作為環境變量,現在我可以在任何地方訪問它。 將此添加到您的 bashrc 文件中

django_env='source/media/anish/Softwares/virtual_env/django2/bin/activate' 

現在您需要重新啟動系統以反映更改,並在重新啟動后輸入 $django_env 以啟動您的虛擬環境。 就如此容易。

至於環境變量在 RAM 中的位置,存儲在 main() 函數的棧頂。 setenv() 等人的任何動態修改。 然后分配到別處

該變量未存儲在某些腳本中。 它只是由 X 服務器腳本設置。 您可以使用set檢查當前設置的環境變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM