Bash

為什麼沒有從 .profile 讀取我的 .bashrc 文件

  • December 2, 2016

在我的.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 .profilebash工作中打字就可以了。

我知道.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嗎?
  • 或使用您的安裝腳本。

如果不是,則問題在於.profileand or .bashrc

  • 也許您應該使用 $HOME 而不是 ~ 作為使用者目錄。
  • 也許你的 bashrc 有一行在非互動時阻止執行:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return

引用自:https://unix.stackexchange.com/questions/327464