Definir o shell no tmux set -g default-shell /usr/bin/bash
resolve o problema. Parece que o shell bash padrão do nix não foi criado com suporte ao readline, conforme a resposta de @Stéphane Chazelas.
Eu não tive esse problema com o tmux antes, mas quando entro em um shell do tmux, ele não renderiza o \[
as [
, mas sim como \[
. Então a configuração padrão do Manjaro Bash não é mais exibida como:
[twig@twig-pc learnzig]$
mas é exibido como:
\[\][twig@twig-pc\[\] learnzig\[\]]$\[\]
Isso é alguma configuração no tmux ou preciso me livrar do .bashrc?
Outras coisas como navegação por cursor não funcionam tão bem (você não pode voltar ou navegar pelos comandos anteriores)
Comandos extras:
$ realpath "/proc/$$/exe"
/nix/store/717iy55ncqs0wmhdkwc5fg2vci5wbmq8-bash-5.2p32/bin/bash
$ echo "$BASH_VERSION"
5.2.32(1)-release
$ typeset -p SHELL PS1
declare -x SHELL="/nix/store/717iy55ncqs0wmhdkwc5fg2vci5wbmq8-bash-5.2p32/bin/bash"
declare -- PS1="\\[\\033[01;32m\\][\\u@\\h\\[\\033[01;37m\\] \\W\\[\\033[01;32m\\]]\\\$\\[\\033[00m\\] "
$ echo "$TERM";stty -a
tmux-256color
speed 38400 baud; rows 46; columns 106; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho
-extproc
$ type bind
# inside
bash: type: bind: not found
# outside
bind is a shell builtin
Considerando que os outros escapes (
\u
,\h
,\033
...) são expandidos, a única explicação que posso pensar para que esses\[
/\]
sejam deixados como estão (em vez de serem tratados como dicas para readline de que o que está entre eles não tem largura, como geralmente acontece) é que seubash
foi criado sem suporte ao readline (o editor de linhas).Conforme visto no código ,
\[
o\]
tratamento não é integrado se readline não estiver habilitado.Eu também esperaria que o
bind
comando não estivesse disponível,set -o emacs
ouset -o vi
que relatasse um erro e que a edição de linha (exceto aquela feita pela disciplina de linha tty) não estivesse disponível.