Bash
~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc … 有什麼區別?
對SO和askubuntu上的問題的回答,以及通過(和閱讀)
$HOME
和的標題/etc/
,指出了許多可用於設置環境變數的文件,包括:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
/etc/
我為所有使用者收集工作中的文件,而其中的文件$HOME
是特定於使用者的。我還收集了.profile
在登錄時載入而在執行.bashrc
時載入的資訊。/bin/bash
我也明白不同的程序有不同的設置文件(例如.Rprofile
R)。但我希望得到一些澄清:
*rc
和*profile
文件有根本不同嗎?- 此類文件的範圍是什麼(例如 Linux 常用哪些文件)
- 是否存在層次結構(例如
.bashrc
覆蓋在 中設置的變數.settings
)- 這類文件有什麼好的參考資料?對於這些文件中的選項?
相關問題
配置文件的組織遠不如您的問題所暗示的那麼統一。沒有“類”,沒有“層次結構”,也沒有全域“配置沙皇”,也沒有委員會來規定通用語法或其他像您正在尋找的漂亮乾淨的概括。只有許多單獨的應用程序,如、
R
和GNOME 桌面環境,它們都有自己的處理方式,因此您應該查看每個單獨程序的文件以回答有關特定文件的任何*特定問題。*如果它看起來是臨時的,那是因為它是:大多數 Unix / Linux 軟體是由不同的人為不同的目的開發的,他們的配置略有不同。bash``screen
要逐點回答您的其他問題:
*rc
並且*profile
意義不大,所以這個問題無法真正回答。“rc”只是配置文件的常用縮寫或後綴。它的詞源可以追溯到遠古時代(電腦時代),可能意味著執行命令(來自runcom)。僅僅因為應用程序使用相同的詞並不意味著它們同意約定。“profile”是一個不太常見的後綴。- 定義“範圍”。大多數應用程序不與其他不相關的應用程序共享配置文件。一個可能的例外是
/etc/profile
and.profile
,它可能被多個不同的 shell 使用(至少包括sh
andbash
)。有一種叫做環境的東西與每個正在執行的程序相關聯,它可以包含可能影響所述程序行為的變數。通常,環境變數由適當的 shell 配置文件設置,或者可能是您使用的任何圖形桌面環境的配置文件。還有“庫”的配置文件,例如.inputrc
readline 和.gtkrc*
GTK,它們將影響使用該庫的每個應用程序。- 不,配置文件沒有全域層次結構。
bash
同樣,請參閱相關特定程序的文件,例如bash
. 您通常可以依賴的一般約定是使用者設置$HOME
覆蓋/etc
. 這通常是通過在系統文件之後讀取使用者文件來完成的,以便以後的設置覆蓋以前的設置。但是,這不是保證,對於確定的答案,您應該參考您正在使用的特定程序的文件。- 沒有“類”,至少沒有足夠籠統的涵蓋您在問題中列出的所有文件,因此此類“類”的參考問題沒有實際意義。同樣,請參閱您正在使用的特定程序的文件。