Linux
除非手動啟動,否則 Bash 不會讀取 .bashrc
bash
除非我從終端手動執行,否則不會.bashrc
從互動式終端bash
獲取:$ bash
或手動獲取它:
$ source ./.bashrc
或執行:
$ st -e bash
我希望這是一些有用的輸出:
$ echo $TERM st-256color $ echo $SHELL /bin/sh $ readlink /bin/sh bash $ shopt login_shell login_shell off
我在 CRUX Linux 3.0 上,我使用
dwm
andst
. 我試過使用.bash_profile
但.profile
沒有成功。有任何想法嗎?
為什麼要採購它?您的預設 shell 不是 bash,而是
sh
:$ echo $SHELL /bin/sh
在大多數現代系統中,
sh
它是基本 shell 的符號連結。例如在我的 Debian 上:$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
在您的情況下,
sh
是一個連結,bash
但是,如中所述man bash
:如果使用名稱 sh 呼叫 bash,它會嘗試盡可能地模仿 sh 的歷史版本的啟動行為,同時也符合 POSIX 標準。
$$ … $$當作為名為 sh 的互動式 shell 呼叫時,bash 查找變數 ENV,如果已定義,則擴展其值,並將擴展值用作要讀取和執行的文件的名稱。由於作為 sh 呼叫的 shell 不會嘗試從任何其他啟動文件中讀取和執行命令,因此 –rcfile 選項無效。
和
–norc
如果 shell 是互動式的,則不要讀取和執行系統範圍的初始化文件 /etc/bash.bashrc 和個人初始化文件 ~/.bashrc。 如果 shell 作為 sh 呼叫,則預設情況下此選項處於啟用狀態。因此,由於您的預設 shell 是
sh
,.bashrc
不會被讀取。只需將預設 shell 設置為 bash 使用chsh -s /bin/bash
.
在 .bash_profile 中確保您具有以下內容:
# .bash_profile # If .bash_profile exists, bash doesn't read .profile if [[ -f ~/.profile ]]; then . ~/.profile fi # If the shell is interactive and .bashrc exists, get the aliases and functions if [[ $- == *i* && -f ~/.bashrc ]]; then . ~/.bashrc fi