当tmux启动或打开一个新窗口时,它不会加载我的.profile
或.bashrc
。我每次都输入. ~/.bashrc
。有没有办法让这种情况自动发生?
答案 0 :(得分:128)
是的,在您的.bash_profile
结束时,请填写以下行:
. ~/.bashrc
这会在通常只处理配置文件的情况下自动获取rc文件。
bash
何时运行某些文件的规则很复杂,并且取决于正在启动的shell的类型(登录/非登录,交互式或非等等),以及命令行参数和环境变量。
您可以在man bash
输出中看到它们,只需查找INVOCATION
- 您可能需要一些时间来消化和解码它: - )
答案 1 :(得分:12)
通过将此行添加到我的〜/ .tmux.conf文件中,运行bash显然对我有用:
set-option -g default-command "exec /bin/bash"
答案 2 :(得分:1)
答案 3 :(得分:1)
对我有用的解决方案如下:
.bash_profile
中没有文件,请创建一个~
文件.bash_profile
的末尾放置source ~/.bashrc
或source ~/.profile
该问题现在应该已解决。
答案 4 :(得分:1)
以前的答案提供了解决方案,但没有解释原因。在这里。
这与Bash初始化文件有关。默认情况下,在{strong>交互式非登录外壳中使用~/.bashrc
。它不会在登录shell中提供。 Tmux默认使用登录外壳。因此,以tmux开始的shell会跳过~/.bashrc
。
default-command
shell命令默认值为空字符串,,它指示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
答案 5 :(得分:0)
我遇到了同样的问题,到目前为止,解决方案对我而言并不奏效。最终为我工作的解决方案可以找到here。
简而言之,tmux
Windows /会话使用登录外壳程序,该外壳程序在启动时会在其他文件中查找~/.profile
。
我想要让zsh从每个新的tmux
窗口开始,因此我将exec zsh
放在了~/.profile
的底部。