tmux não está colorindo o prompt do PS1

5

Eu recentemente decidi mudar minha variável PS1 para acomodar algumas lindas cores Solarizadas para o meu prazer de visualização terminal. Quando não está em uma sessão do tmux, tudo é ótimo! Arco-íris, pôneis, unicórnios e um alerta diferenciado! Legal!

O problema está dentro do tmux, no entanto. Eu verifiquei que o valor de PS1 é o que eu espero que seja e o mesmo que quando o tmux não está rodando, a saber \[3]0;\wecho -ne "3[1;33m hi"7\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\] .

Todos os meus aliases, etc. no meu .bash_profile também estão funcionando conforme o esperado. O tmux também está exibindo cores sem incidentes, pois gls --color se comporta como esperado, assim como export PS1="\[3]0;\wbash7\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]" .

A linha atual relevante no meu .bash_profile é export PS1=[that long string I've already posted] , embora originalmente eu estivesse pesquisando um script localizado em um arquivo .bash_prompt para lidar com alguns condicionais, etc. Eu tentei reverter para a versão mais simples.

A execução de touch testing_touch_from_bash_profile fará com que o prompt seja colorido, mas deve ser feito em cada painel. echo $TERM não será.

Meu arquivo .tmux.conf é o seguinte:

set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

Porções relevantes de .bash_profile:

export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
    test -z "$TMUX" && (tmux attach || tmux new-session)
fi

Eu estou usando o macOS Sierra, iTerm 2, eu tentei tanto a versão homebrew atual do bash quanto o bash do sistema (atualmente ele está usando o homebrew), o tmux 2.4.

Eu também coloquei xterm-256color no meu .bash_profile enquanto estava em uma sessão do tmux com dois painéis, matou um painel, abriu um painel e verificou que o arquivo foi criado de fato.

ps -ax | grep tmux retorna tmux new bash .

Eu assegurei que ao sair do tmux para testar mudanças de configurações que eu tenha saído do tmux e que nenhum processo tmux esteja atualmente rodando no sistema via %code% .

Curiosamente, fazer o sourcing do script .bash_prompt também altera a cor, desde que eu o faça dentro de cada painel tmux.

Eu analisei o link e tentei adicionar o sinalizador --login após a chamada do bash na primeira linha do meu .tmux.conf. Iniciar o tmux com %code% fará com que o primeiro painel seja colorido, mas os painéis subsequentes não.

A variável $ PS1 está sendo honrada por aparentemente todos os aspectos, exceto por colorir qualquer um dos campos.

Alguém tem alguma ideia?

    
por J. Sagurton 22.04.2017 / 03:03

2 respostas

3

Seu PS1 também me dá saída em preto e branco.

No entanto, mudar de volta para o meu me dá cor, então você deve ser capaz de descobrir o diferente, eu uso

$ echo $PS1
\[3[01;31m\]\t \[3[01;32m\]durrantm \[3[02;36m\]\h \[3[01;34m\]'pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#_#g"' \[3[00;33m\]$(git_branch)\[3[00m\]\n\$

git_branch é uma função bash que eu tenho:

git_branch () { 
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)//'
}

Seu vs. Meu:

Isso funciona da mesma forma no OSX e no Ubuntu

    
por 22.04.2017 / 03:19
1

Minha solução para esse problema foi definir

force_color_prompt=yes

no meu .bashrc . Agora meu prompt do tmux tem cor.

    
por 09.01.2019 / 15:24