我已經閱讀了一些有關 Linux 啟動等的內容,我注意到在我的主目錄中不存在資料夾profile.d
:
/home/user/profile.d/ # Doesn't exists
也不是文件.bash_profile
:
/home/user/.bash_profile # Doesn't exists
是否有一個原因?
Ubuntu 15.04、侏儒
答案1
簡短回答:沒關係,所以。
有許多初始化使用者文件,因為使用者可以決定以多種不同的方式登入電腦帳戶,從控制台,使用互動式或非互動式 shell,使用不同類型的 shell。這不是所有用戶的特權,但需要保持向後相容性事情變得複雜了一點這些事。 :-)
一個目錄
profile.d
不應該在你的主目錄下:
/etc/profile.d
包含具有特定於應用程式的啟動檔案的腳本,這些腳本也在啟動時由 shell 執行。它是對所有使用者有效的目錄,因此它是在該/etc/
路徑下建立的,而不是在每個使用者主目錄下建立的。該檔案
~/.bash_profile
是個人初始化檔案之一,並且當它存在時儲存在每個使用者主目錄中。但它並不需要存在。它應該包含啟動登入 shell 時要執行的 bash 特定命令(~/.profile
也可以從不同的 shell 讀取,通常理解與 bash 不同的語法)。
INVOCATION
閱讀以下部分的更多內容man bash
當 bash 作為互動式登入 shell 被呼叫時 (...)它首先從檔案中讀取並執行命令
/etc/profile
,如果該文件存在。
讀取該文件後,它會找到~/.bash_profile
,~/.bash_login
, 和~/.profile
,以該順序,並閱讀和 從第一個存在且可讀的命令開始執行命令。
因此,如果您有一個文件,如果未在其他文件之一中調用(或來源),~/.bash_profile
則不會讀取該文件。~/.profile
注意
當啟動非登入 shell 的互動式 shell 時,bash 會讀取並執行來自
/etc/bash.bashrc
和 的命令~/.bashrc
(如果這些檔案存在)。
從 Ubuntu 12 的某些版本(當然從 13.10 開始)中,.profile
原始檔是~/.bashrc
.
ssh
當執行使用者不希望取得的登入 shell 時(例如進入電腦時),這可能會導致意外行為~/.bashrc
。
參考:
- 在 Bash(不是這樣)初學者指南中,關於外殼初始化文件
- 為什麼Ubuntu預設的~/.profile來源~/.bashrc?