
Recentemente, decidi alterar minha variável PS1 para acomodar algumas lindas cores Solarizadas para o prazer de visualização do meu terminal. Quando não está em uma sessão tmux, tudo está ótimo! Arco-íris, pôneis, unicórnios e uma dica distinguível! Legal!
O problema está dentro do tmux, no entanto. Verifiquei que o valor de PS1 é o que espero que seja e o mesmo que é quando o tmux não está em execução, ou seja \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
, .
Todos os meus aliases, etc. no meu .bash_profile também estão funcionando conforme o esperado. tmux também está exibindo cores sem incidentes, pois echo -ne "\033[1;33m hi"
se comporta conforme o esperado gls --color
.
A linha atual relevante em meu .bash_profile é export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, embora originalmente eu estivesse fornecendo um script localizado em um arquivo .bash_prompt para lidar com algumas condicionais, etc.
A execução bash
fará com que o prompt fique colorido, mas deve ser feito em cada painel. export PS1=[that long string I've already posted]
não vou.
Meu .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, 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 enquanto estava em uma sessão tmux com dois painéis, matei um painel, abri um painel e verifiquei se o arquivo foi de fato criado.
echo $TERM
retorna xterm-256color
.
Eu garanti que, ao sair do tmux para testar as alterações nas configurações, saí do tmux e que nenhum processo tmux está em execução no sistema via ps -ax | grep tmux
.
Estranhamente, o fornecimento do script .bash_prompt também altera a cor, desde que eu faça isso em cada painel do tmux.
eu olheihttps://stackoverflow.com/questions/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-we tentei adicionar o sinalizador --login após a chamada do bash na primeira linha do meu .tmux.conf. Iniciar o tmux tmux new bash
fará com que o primeiro painel seja colorido, mas os painéis subsequentes não.
A variável $PS1 está sendo homenageada aparentemente em todos os aspectos, exceto na coloração de qualquer um dos campos.
Alguém tem alguma ideia?
Responder1
Na minha máquina a solução é adicionar
set -g default-terminal "xterm-256color"
para ~/.tmux.conf
.
Responder2
Minha solução para esse problema foi definir
force_color_prompt=yes
no meu .bashrc
. Agora meu prompt do tmux tem cor.
Responder3
Seu PS1 também me oferece saída em preto e branco.
No entanto, voltar para o meu me dá cor, então você deve ser capaz de descobrir a diferença, eu uso
$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$
git_branch é uma função bash que tenho, que é:
git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
Seu versus meu:
Isso funciona da mesma forma no OSX e no Ubuntu
Responder4
Eu tive esse problema ao trabalhar no Ubuntu 20.04.
EnquantoA resposta de Pankifuncionou para mim, sempre especificava source ~/.bashrc
sempre que fazia loginTmuxshell seguindoevaristegdcomentário de.
Veja como eu consertei:
Primeiramente, crie um arquivo chamado .tmux
no diretório inicial da sua máquina, que é ~/.tmux.conf
.
Em seguida, coloque a configuração que deseja usar paraTmuxdentro dele e salve-o. Para mim a configuração que eu precisava era a mesma doTela GNUpacote que vem por padrão com o Ubuntu usa, então copiei o conteúdo do ~/.bashrc
arquivo para o ~/.tmux.conf
arquivo. Desta forma, se eu tiver que editar alguma das configurações doTmux, eu não mexeria com aquele para oTela GNU.
Observação: você pode pular esta etapa e apenas usar o ~/.bashrc
arquivo se não se importar com a separação de interesses.
Em seguida, adicione o arquivo ao arquivo ~/.bash_profile
, ~/.bash_login
e ~/.profile
. Deve ser adicionado no final do arquivo:
source "$HOME/.tmux.conf"
OU
source "$HOME/.bashrc"
Aqui está um exemplo:
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
source "$HOME/.tmux.conf"
Observação: o ~/.bash_profile
arquivo tem a primeira precedência, depois o ~/.bash_login
arquivo como a segunda precedência e, em seguida, o ~/.profile
arquivo como a última precedência.
Isso é tudo.
Eu espero que isso ajude