Tmux提示符未遵循正常的bash提示符PS1 \W

27

我在我的Mac上进行了一些更新,似乎破坏了我的一些设置。我在我的.bash_profile中设置了以下内容:

export PS1="\W $"

这个命令在我的正常bash会话中起作用,只显示当前目录而不是整个路径。但是,当我切换到tmux时,它又显示整个路径。其他对于PS1的更改,比如颜色或其他字符,在bash配置文件中工作良好,并且在tmux中也反映出来。我已经清空了我的.tmux.conf文件,以查看是否会导致冲突,但是这种行为没有发生变化。

我在系统上创建了一个新用户并尝试了相同的PS1,它在正常会话和tmux中都完美地工作。

我感到困惑的原因是我知道它曾经工作过,但是无法弄清楚更新会改变什么。除了.bash_profile和.tmux.conf文件之外,还有哪些文件可能会影响这里的设置呢?是否有办法确定tmux从哪里获取其设置?

其他信息: iTerm2和Terminal中的表现相同 Tmux版本1.8 Mac OSX 10.9.1


tmux 可能会创建非登录 shell,此时将会调用 .bashrc 文件。 - chepner
我不认为这是问题所在,因为我在我的.bash_profile中的其他别名都可以在tmux中使用,并且我对PS1所做的任何更改都能正确地反映在tmux中,但是\W变量似乎就是不想正常工作。 - Paige
当您进入tmux时,$PS1设置为什么? - graywh
9个回答

40

这个对我有效: 在tmux/终端中:

tmux set-option -g default-command bash

或者直接放入~/.tmux.conf文件中:

set-option -g default-command bash

2
+1。在 tmux 2.7 下仍然有效。每次我启动 gnome-terminal 都会自动产生几个窗格,通过执行 tmux -u new-session \; split-window -h \; split-window -v \; select-pane -t 0 \; send-keys ' ' C-m \; ... 经过数小时的研究许多维基和帖子后,这最终对我起作用了。干杯。 - Cbhihe
1
简单、清晰、有效。这应该是被接受的答案。 - Brett Holman
@Cbhihe,感谢您的提示。但是为什么需要send-keys呢?没有最后一部分,它对我来说也可以工作。 - SPRBRN
@SPRBRN:哇!好久不见了,但如果我没记错的话,send-keys ' ' C-m 只会将空键 ' ' 和回车符一起发送到之前用 select-pane -t 0 选择的窗格中。这样它就可以在该窗格中定位您的光标,以便进行可视化识别。这是唯一使用它的原因。这样可以少用一个鼠标移动和点击... 您可以执行上面的命令(甚至可以编程您的终端仿真器,在启动时自动执行),然后就可以开始直接在默认选择的窗格中输入,由光标进行标识。;-) - Cbhihe
这是正确的答案,但要指出的是第一个命令只在系统重新启动前起作用。因此,您应该使用第二个命令并将其放在~/.tmux中。 - 71GA
对我来说,这里的任何方法都没有起作用。但是 https://unix.stackexchange.com/a/577104 这个方法有效。 - masec

16
在您的~/.tmux.conf中添加以下内容。
set -g default-terminal "tmux-256color" 

来自备受喜爱的ArchWiki tmux


对我有用。@tmux-lover的那个没有用。 - Teshan Shanuka J

7

我有类似的问题。如果我总是使用应用了bash命令的tmux启动,那么我就能得到正确的结果,例如:

tmux new bash

因此,为了简化操作,我在我的 ~/.bash_aliases 文件中创建了一个别名,我一直在使用它:
alias tn='tmux new bash'

但这仅适用于第一窗口。创建新窗口时,您必须通过在终端中执行bash来重新启动bash。


点赞,兄弟。我也试了被采纳的答案,但是对我也没用。 - Kanwar Saad

7

将以下内容添加到 ~/.tmux.conf 文件中:

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

不要忘记保存~/.tmux.conf并重启tmux,以使更改生效。

4

我曾经遇到过同样的问题,在一些调研后,我在我的~/.tmux.conf文件中添加了以下命令:

set-option -g default-command "reattach-to-user-namespace -l /opt/local/bin/bash --login"

我使用的是OSX 10.9.5操作系统,iTerm2版本为Build 2.0.0.20141103,bash版本为4.3.30(1)-release,tmux版本为1.9a。Bash和tmux都是从macports安装的。


这对我有用,但我还必须运行 brew install reattach-to-user-namespace - BananaNeil

2
我知道我来晚了,但以下是对我有效的解决方案:
只需将-256color添加到TERM中即可。
步骤如下:
1. 打开/运行tmux。 2. 运行以下命令:echo $TERM。我们将使用此输出。我得到的是screen。在下一步中使用您自己的输出。 3. 编辑您的tmux配置文件:vim ~/.tmux.conf并添加此行:set -g default-terminal screen-256color。 4. 退出tmux。 5. 再次打开/运行tmux。
对于我而言,使用tmux-256color无效。我使用的是Ubuntu 18.04,bash 4.4.20,tmux 2.6。

1
最好使用infocmp命令来检测系统的terminfo数据库中已知的终端。我在~/.tmux.conf中有以下内容:
# Last match wins
if-shell "infocmp xterm-256color" "set-option -g default-terminal xterm-256color"
if-shell "infocmp screen-256color" "set-option -g default-terminal screen-256color"
if-shell "infocmp tmux" "set-option -g default-terminal tmux"

如果infocmp shell命令成功,那么接下来会执行set-option tmux命令。

0

当使用tmux和byobu时,您可以尝试byobu-prompt命令。它会询问您是否想要一个bash颜色提示符。回答是后,提示符将更改为通常的user@host。


-5
将以下内容添加到您的.tmux.conf文件中:
new -n WindowName bash --login

您可以将WindowName替换为您想要命名第一个窗口的任何内容。当以这种方式调用bash时,它会源到您的.bash_profile.bash_rc.profile等文件中,这是您更改$PS1的位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接