為什麼可以將 ~/.profile 添加到 ~/.bash_profile?
安裝RVM時,會收到以下消息:
* WARNING: You have '~/.profile' file, you might want to load it, to do that add the following line to '/home/dotancohen/.bash_profile': source ~/.profile
我很擔心,因為我的 ~/.profile 文件包含
xmodmap ~/.Xmodmap
我顯然不想在每次打開新 shell 時執行(交換我的 CapsLock 和 ESC 鍵)。為什麼明智的 RVM 開發
.profile
人員會建議採購.bash_profile
?
.profile
並且.bash_profile
在它們被執行的時間方面是相同的:它們在您登錄時執行。不同之處在於只有 bash 執行.bash_profile
;Bourne 風格的 shell(dash、ksh 等)執行.profile
..profile
如果.bash_profile
不存在,Bash 本身就會執行。即使你有 bash 作為你的登錄 shell,
.profile
它也經常是在你以圖形模式登錄時執行的——許多發行版都設置了 X 會話啟動腳本來執行sh
和載入.profile
。因此建議使用
.profile
而不是.bash_profile
做諸如定義環境變數之類的事情。除非您絕對需要特定於 bash 的功能,否則只需將所有內容放入.profile
. 但即使你這樣做了,也有理由保留 a.bash_profile
,即當 bash 載入它時,它不會 load.bashrc
,即使它是互動式的。因此,對於大多數人來說,~/.bash_profile
應該由以下兩行組成:. ~/.profile case $- in *i*) . ~/.bashrc;; esac
你不應該
xmodmap
從.profile
. 這不會在您打開新的 shell 時執行,但會在您使用帶有 X11 轉發的 SSH 遠端登錄時執行。不幸的是,當您以圖形模式登錄時,沒有載入任何標准文件。Debian 載入~/.xsessionrc
(我認為這適用於所有顯示管理器,除了載入 Gdm~/.xprofile
);其他發行版有不同的設置。如果您需要跨發行版的可移植性,配置您的桌面環境以xmodmap
在啟動時執行可能會更容易。如果您所做的只是交換 CapsLock 和 Ctrl,則可以使用大多數現代桌面環境提供的介面的 XKB 設置來完成。