~/.profile、~/.bashrc、~/.bash_profile、~/.gnomerc、/etc/bash_bashrc、/etc/screenrc ... 之間有什麼不同?

~/.profile、~/.bashrc、~/.bash_profile、~/.gnomerc、/etc/bash_bashrc、/etc/screenrc ... 之間有什麼不同?

問題的答案所以阿庫本圖,以及瀏覽(並讀取其標題)$HOME/etc/,指示許多可用於設定環境變數的文件,包括:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

我收集了/etc/適用於所有使用者的文件,而其中的文件$HOME是特定於使用者的。我還收集到.profile在登入時加載而在執行.bashrc時加載。/bin/bash我還了解到不同的程式有不同的設定檔(例如.RprofileR)。但我希望得到一些澄清:

  • *rc和文件有本質上的不同嗎*profile
  • 此類文件的範圍是什麼(例如哪些文件通常用於 Linux)
  • 是否存在層次結構(例如.bashrc覆蓋中設定的變數.settings
  • 此類文件有哪些好的參考資料?對於這些文件中的選項?

連結問題

答案1

設定檔的組織遠不如您的問題所暗示的那麼統一。沒有“類”,沒有“層次結構”,也沒有全局“配置沙皇”,也沒有委員會來規定通用語法或其他像您正在尋找的那樣的乾淨的概括。只有大量獨立的應用程序,例如RbashscreenGNOME 桌面環境,它們都有自己的工作方式,因此您應該查看每個單獨程序的文檔來回答任何問題具體的有關特定文件的問題。如果它看起來是臨時的,那是因為:大多數 Unix / Linux 軟體是由不同的人出於不同的目的而開發的,他們的配置都略有不同。

逐點回答您的其他問題:

  • *rc而且*profile意義不大,所以這個問題無法真正回答。 「rc」只是設定檔的常用縮寫或後綴。它的詞源可以追溯到遠古時代(電腦時代),可能意味著運行命令(來自潤康)。僅僅因為應用程式使用相同的單字並不意味著它們同意約定。 「profile」是一個不太常見的後綴。

  • 定義“範圍”。大多數應用程式不會與其他不相關的應用程式共用設定檔。一個可能的例外是/etc/profile.profile,它可以由多個不同的 shell 使用(至少包括shbash)。有一種東西叫做環境與每個正在運行的進程相關聯,其中可能包含可能影響該進程行為的變數。一般來說,環境變數是由適當的 shell 設定檔設定的,或者可能是您正在使用的任何圖形桌面環境的設定檔。還有「庫」的設定文件,例如.inputrcreadline 和.gtkrc*GTK,這將影響使用該庫的每個應用程式。

  • 不,設定檔沒有全域層次結構。再次,請參閱相關特定程序的文檔,例如bash手動的為了bash。您通常可以依賴的一般約定是,$HOME中的使用者設定會覆蓋/etc.這通常是透過在系統檔案之後讀取使用者檔案來完成的,以便後面的設定覆蓋前面的設定。但是,這並不能保證,要獲得明確的答案,您應該參閱您正在使用的特定程序的文檔。

  • 沒有“類”,至少沒有足夠通用的內容來包含您在問題中列出的所有文件,因此此類“類”的參考問題是沒有意義的。再次,請參閱您正在使用的特定程式的文檔。

答案2

我認為這個問題在很多層面上都太廣泛了,例如你問的問題至少是關於一個問題有不同的程序。我只會看看/etc和中的設定檔之間的差異$HOME

Unix 是一個多用戶作業系統,這意味著許多不同的人可以透過使用sshtelnet或 來使用一個系統Xorg。要為您的使用者提供標準化配置,您可以提供系統範圍的配置/etc/,您的發行版通常也會使用它來提供全域配置,例如bashscreen

另一方面,有些用戶希望自己自訂程式的設置,例如鍵綁定、顏色或外觀。這是透過其$HOME.簡而言之,/etc/提供系統範圍的配置,而 $HOME 中的設定檔允許使用者更改/覆蓋系統範圍的配置。

答案3

部分答案來自這個帖子

.bashrc是 Bash 每當以互動方式啟動時都會執行的 shell 腳本。

對比.bash_profile和 ,.profile它們僅在新的登入 shell 啟動時運行。 (bash-l)

您可以根據您希望命令執行一次還是每次互動式 shell 啟動時執行來選擇命令是否進入.bashrcvs。.bash_profile

相關內容