新的tmux会话不提供bashrc文件


17

摘要

当我创建一个新的tmux会话时,我的提示从默认的bash配置中拉出,我必须手动运行source ~/.bashrc我的自定义提示。

分析

我正在使用RHEL 7机器。经过一段时间的bash更新后,我开始注意到这种行为,但是直到现在才开始提出这个问题(并且不确定是哪个更新开始发生)。

例如,我已自定义提示,如下所示:

[user@hostname ~]$

每当我开始一个新的tmux会话时,它都会使用bash的默认值:

-sh-4.2$

快速运行source ~/.bashrc总是可以解决该问题,但是每次我想修复一些小问题时都必须这样做,这很烦人。关于如何使tmux再次自动执行此操作的任何想法?

如果需要更多信息,我很乐意提供。

tmux.conf

作为参考,我在tmux.conf下面提供了我的文件,尽管这几乎不能称为“自定义”。

setw -g mode-keys vi

# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"

Answers:


19

据我所知,默认情况下tmux运行登录外壳程序。当bash被作为交互的登录shell,它查找~/.bash_profile~/.bash_login~/.profile。因此,您必须放入source ~/.bashrc这些文件之一。

解决此问题的另一种方法是在文件中放入.tmux.conf以下行:

set-option -g default-shell "/bin/bash"

1
我将source ~/.bashrc行添加到我的.bash_profile,尝试注销并重新登录,创建一个新的tmux会话,但没有任何更改。有任何想法吗?
贾斯汀·弗洛里

1
尝试在文件中放入.tmux.conf这一行set-option -g default-shell "/bin/bash"。这应该可以解决您的问题(至少希望如此)!
andreatsh

重新加载我的tmux配置后,这解决了我的问题!是否要修改答案或创建一个新答案?我很乐意将其标记为已接受。:)
贾斯汀·弗洛里

您很好,我迅速修改了答案!
andreatsh

2
给macOS用户的注意事项:如果您是bash通过Homebrew 安装的,但此方法不起作用,请更改"/bin/bash""/usr/local/bin/bash"

5

这与Bash初始化文件有关。默认情况下,~/.bashrc交互式非登录外壳中使用。它不会在登录shell中提供。Tmux 默认使用登录外壳。因此,由tmux skip启动的shell ~/.bashrc

default-command 外壳命令

默认值为空字符串,字符串指示tmux使用该default-shell选项的值创建登录shell

Bash的初始化文件,

  1. 登录方式:
    1. /etc/profile
    2. ~/.bash_profile~/.bash_login~/.profile(仅第一存在一个)
  2. 交互式 非登录
    1. /etc/bash.bashrc (某些Linux;不适用于Mac OS X)
    2. ~/.bashrc
  3. 非互动式:
    1. 源文件在 $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用户在配置文件中对此进行设置。

参考文献


2

将以下内容添加到.tmux.conf

set-option -g default-shell "/bin/bash"

无法产生预期的结果。

仅当添加source "$HOME/.bashrc"~/.bash_profile预期结果中时。

这在打开新窗口或窗格以及分离和打开新的tmux会话时将在活动的tmux会话中起作用。

经过测试:

VERSION="16.04.2 LTS (Xenial Xerus)"
tmux 2.1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.