Ubuntu

.bashrc 未載入,.bash_profile 存在

  • April 5, 2013

在 ubuntu 終端中,我的 .bashrc 在我執行之前不可用: source ~/.bashrc

我有一個 ~/.bash_profile 的內容:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

我有一個 ~/.profile :

# if running bash
if [ -n "$BASH_VERSION" ]; then
   # include .bashrc if it exists
   if [ -f "$HOME/.bashrc" ]; then
   . "$HOME/.bashrc"
   fi
fi

我應該怎麼做才能讓我的 .bashrc 自動載入?我應該合併 .bash_profile 和 .profile 並刪除其中一個嗎?謝謝

您需要將存在於您的相同邏輯添加.profile到您的.bash_profile. .profile如果.bash_profile存在則不使用,因此您.bashrc沒有被採購。

不過,在 .bash_profile 中不需要檢查您是否正在執行 bash。這就足夠了:

[[ -f ~/.bashrc ]] && source ~/.bashrc

SuperUser 上有一個很好的答案,解釋了.bashrc 和 .bash_profile 之間的區別

本質上,“配置文件”文件僅在登錄時讀取。你可以這樣想;當您登錄時,shell 使用配置文件之一來“設置您的配置文件”。

否則,如果您已經登錄,並且您啟動了一個新會話(打開一個新選項卡/視窗或在 cli 上呼叫 bash),shell 只會讀取您的“rc”文件。

我通過將大部分內容放在我的 .bashrc 文件中,然後從我的 .profile 文件中獲取 .bashrc 文件來處理這個問題。這是一個例子:

我的.profile文件:

source ~/.bashrc

我的.bashrc文件:

alias g='egrep -i'

export CLICOLOR=1
export LSCOLORS=ehfxcxdxbxegedabagacad

PS1="\[\e[0;31m\]\u\[\e[0;32m\]@\[\e[0;31m\]\h\[\e[0;37m\] \w\[\e[0;39m\]"
case `id -u` in
       0) PS1="${PS1}# ";;
       *) PS1="${PS1}$ ";;
esac

引用自:https://serverfault.com/questions/496510