Tmux 似乎没有加载 .bashrc

Tmux 似乎没有加载 .bashrc

我正在尝试开始使用 tmux 并“修复”tmux 无法在启动时加载的问题.bashrc。我尝试了所有修复方法,例如添加source ~/.bashrc~/.profile创建~/.bash_profile并添加。即使我启动 tmux 并运行,也source ~/.bashrc没有任何变化。

.bashrc对用户名后的目录显示方式以及颜色做了一些小改动。当我启动 tmux 时,目录的显示方式与未进行任何更改时相同,.bashrc并且颜色与文本颜色相同,而在普通 bash 会话中并非如此。

有人知道如何解决这个问题吗?

答案1

由于您没有透露有关您的确切信息.bashrc,我将扮演一个通灵者并远程读取它。

有一种情况类似于

case "$TERM" in
    xterm-color|xterm-256color) …

并且你的提示取决于它。详细说明或许喜欢

case "$TERM" in
    xterm-color|xterm-256color) color_prompt=yes;;
esac

然后例如

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

如果是这种情况,那么罪魁祸首就是:tmux 使用screentmux或类似字符串(例如tmux-256color$TERM。 tmux 使用的字符串不满足.bashrc启用彩色提示的条件。

在 Bash 内部的 tmux 中调用echo "$TERM"。无论您得到什么,它都应该能够处理颜色;因此只需将其添加到条件中即可。示例:

case "$TERM" in
    xterm-color|xterm-256color|screen) …

$TERM您可以从以下答案中了解这个问题

答案2

埋在评论里,我发现有一种比修改 .bashrc 的那部分更干净的解决方案。如果你有一个足够“现代”的 .bashrc,那case "$TERM"行将是:

case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

在这种情况下,您只需将此设置添加到您的.tmux.conf,而不会造成任何功能损失:

set -g default-terminal "screen-256color"

相关内容