Bash
為什麼沒有從 .profile 讀取我的 .bashrc 文件
在我的
.profile
文件中,我有一行:# source bashrc if it exists if [ -f ~/.bashrc ]; then source ~/.bashrc fi
確保我的
.bashrc
文件是否存在。我還有一個設置腳本,我在新機器上執行來設置我的環境,由於某種原因表現不同。在安裝腳本的最後,我有:
# read .profile source "$USERDIR/.profile"
Where
$USERDIR
指向我的主目錄。我知道.profile
該腳本執行時來源正確,因為我回顯“.profile sourced”,並且在腳本完成時列印。但是,
.bashrc
不是從中讀取的.profile
(當.profile
來自此設置文件時)。我不知道為什麼,因為只是source .profile
從bash
工作中打字就可以了。我知道
.bashrc
沒有執行,因為我的 rc 文件中的 echo 行僅在我.profile
直接獲取而不是來自此設置腳本時才會回顯。.bashrc
當我嘗試獲取它時該腳本確實存在(因此if [ -f ~/.bashrc ]
應該執行),因為它是同時創建的 .profile 是。
一步一步來。將此添加到
.profile
# source bashrc if it exists if [ -f ~/.bashrc ]; then echo ".profile is sourcing " ~/.bashrc source ~/.bashrc fi
然後呼叫 bash 作為登錄名:
bash -l
應該足夠了。行:
.profile is sourcing /home/user/.bashrc
被列印了嗎?如果是這樣,問題可能在於:
- 這些文件是否存在:~/.bash_profile, ~/.bash_login
- bash 是用選項呼叫的
--noprofile
嗎?- 或使用您的安裝腳本。
如果不是,則問題在於
.profile
and or.bashrc
。
- 也許您應該使用 $HOME 而不是 ~ 作為使用者目錄。
- 也許你的 bashrc 有一行在非互動時阻止執行:
# If not running interactively, don't do anything [ -z "$PS1" ] && return