Answers:
是的,在您的末尾.bash_profile
,添加以下行:
. ~/.bashrc
在通常只处理配置文件的情况下,这会自动获取rc文件。
有关何时bash
运行某些文件的规则很复杂,并且取决于要启动的Shell的类型(登录/非登录,是否交互)等等,以及命令行参数和环境变量。
您可以在man bash
输出中看到它们,只需寻找INVOCATION
-尽管可能需要一些时间来消化和解码它:-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
通过将以下行添加到我的〜/ .tmux.conf文件中,运行bash对我明确起作用:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf
:set -g default-command "/bin/bash"
。谢了哥们。
以前的答案提供了解决方案,但没有解释原因。这里是。
这与Bash初始化文件有关。默认情况下,~/.bashrc
在交互式非登录外壳中使用。它不会在登录shell中提供。Tmux 默认使用登录外壳。因此,以tmux skip开始的shell ~/.bashrc
。
default-command
外壳命令默认值为空字符串,它指示tmux使用该
default-shell
选项的值创建登录shell。
Bash的初始化文件,
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(仅第一存在一个)/etc/bash.bashrc
(某些Linux;不适用于Mac OS X)~/.bashrc
$BASH_ENV
奇怪的交互式非登录加载要求也使其他情况下的人们感到困惑。将最好的解决办法是改变的负载要求,~/.bashrc
作为唯一的互动,这正是一些发行版,如Ubuntu,在做什么。
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
这应该是您想要的解决方案。并且我建议每个Bash用户在配置文件中对此进行设置。
参考文献
man tmux
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
适用于我的解决方案如下:
.bash_profile
如果没有文件,则创建一个文件~
.bash_profile
看跌期权source ~/.bashrc
或source ~/.profile
现在应该解决此问题。
我遇到了同样的问题,到目前为止,解决方案对我而言并不奏效。最终对我有用的解决方案可以在这里找到。
简而言之,tmux
Windows /会话使用登录外壳程序,该外壳程序~/.profile
在启动时会查找其他文件。
我想要的是让zsh从每个新tmux
窗口开始,因此我将其放在窗口exec zsh
的底部~/.profile
。