Bash

是否存在始終以互動模式獲取的 Bash 文件,無論它是登錄還是非登錄?

  • February 10, 2018

據我所知,互動式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 並且父程序是rshdorsshd時,bash 源~/.bashrc(但不是~/.bash_profileor ~/.profile)。所以你可能想把它放在你的頂部.bashrc

if [[ $- != *i* ]]; then return; fi

另請參閱.bashrc 和 .bash_profile之間的區別和登錄 Shell 和非登錄 Shell 之間的區別?

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