Bash
是否存在始終以互動模式獲取的 Bash 文件,無論它是登錄還是非登錄?
據我所知,互動式shell可能登錄或未登錄,它們的啟動文件不同。
- 如果 interactive + login shell →
/etc/profile
那麼第一個可讀的~/.bash_profile
,~/.bash_login
, 和~/.profile
- 如果互動式 + 非登錄 shell →
/etc/bash.bashrc
然後~/.bashrc
我想在每次使用互動式 shell 時設置一些變數,無論它是否是登錄 shell。
不,沒有。是的,這是一個設計缺陷。
在 中使用以下內容
~/.bash_profile
:if [ -e ~/.profile ]; then . ~/.profile; fi if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi
請注意 bash 有一個更奇怪的怪癖:當它是一個非互動式登錄 shell 並且父程序是
rshd
orsshd
時,bash 源~/.bashrc
(但不是~/.bash_profile
or~/.profile
)。所以你可能想把它放在你的頂部.bashrc
:if [[ $- != *i* ]]; then return; fi