Recentemente, decidi alterar minha variável PS1 para acomodar algumas cores bonitas de Solarized para o meu prazer de visualização do terminal. Quando não está em uma sessão tmux, tudo está ótimo! Arco-íris, pôneis, unicórnios e um prompt distinguível! Legal!
O problema está no tmux, no entanto. Eu verifiquei que o valor do PS1 é o que eu espero que seja e o mesmo que quando o tmux não está sendo executado, a saber \[\033]0;\w\007\]\[\[\]\]\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, com o echo -ne "\033[1;33m hi"
comportamento esperado gls --color
.
A atual linha relevante no meu .bash_profile é que export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, embora originalmente eu estava fornecendo um script localizado em um arquivo .bash_prompt para lidar com algumas condicionais, etc. Tentei reverter para a versão mais simples.
A execução bash
fará com que o prompt seja colorido, mas deve ser feito em cada painel. export PS1=[that long string I've already posted]
não vou.
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}"
Partes 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
Estou usando o macOS Sierra, o iTerm 2, tentei a versão homebrew atual do bash e o bash do sistema (atualmente está usando o homebrew), tmux 2.4.
Também coloquei touch testing_touch_from_bash_profile
no meu .bash_profile durante uma sessão do tmux com dois painéis, abandonei um painel, abri um painel e verifiquei se o arquivo foi realmente criado.
echo $TERM
retorna xterm-256color
.
Eu assegurei que, ao sair do tmux para testar as alterações nas configurações, saí do tmux e que nenhum processo do tmux esteja sendo executado no sistema atualmente ps -ax | grep tmux
.
Estranhamente, a fonte do script .bash_prompt também muda a cor, desde que eu faça isso em cada painel do tmux.
Eu olhei /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w e tentei adicionar o sinalizador --login após a chamada bash na primeira linha do meu .tmux.conf. Iniciar o tmux with tmux new bash
fará com que o primeiro painel seja colorido, mas os painéis subsequentes não.
A variável $ PS1 está sendo respeitada por aparentemente todos os aspectos, exceto para colorir qualquer um dos campos.
Alguém tem alguma ideia?
PS1
configuração que você postou não tem nenhum comando para alterar as cores. Poste uma configuração real que funcione fora do tmux. Além disso, você deve definirPS1
em.bashrc
, não em.bash_profile
:.bash_profile
pode não ser executado em tudo, e as configurações podem ser substituídas mais tarde.Respostas:
Seu PS1 também me fornece saída em preto e branco.
No entanto, voltar para o meu me dá cor, então você deve descobrir o diferente, eu uso
O git_branch é uma função do bash que tenho:
Seu vs. Meu:
Isso funciona da mesma maneira no OSX e no Ubuntu
fonte
Minha solução para esse problema foi definir
force_color_prompt=yes
no meu
.bashrc
. Agora, meu prompt do tmux tem cores.fonte
tmux
e, em seguida, dentro de uma sessão do tmuxsource ~/.bashrc
. Você precisa fazer isso em cada painel.Na minha máquina, a solução é adicionar
para
~/.tmux.conf
.fonte