Por que os símbolos ANSI não funcionam no PuTTY / Debian?

6

A incrível aplicação tree , que eu instalei no Debian com apt-get install tree , tem a opção de desenhar sua saída usando gráficos ANSI. Sua saída é assim agora:

.
tqq node_modules
x   tqq coffee-script
x   tqq eco
x   tqq express
x   tqq forever
x   mqq stylus
tqq package.json
mqq src
    mqq daemontest.coffee

Isso está obviamente errado. Estas são minhas variáveis LANG=en_GB.UTF-8 UTF-8 e LC_ALL=C env. PuTTY está definido para esperar UTF-8 também. Se eu mudar o PuTTY para "Usar codificação de fonte", então tree -A parece certo, porém npm list irá quebrar e ficará assim:

├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
...

Todas essas coisas devem funcionar corretamente, então estou supondo que minhas configurações estão erradas em algum lugar. Alguém poderia me ajudar a sintonizar exatamente onde?

EDIT: Meu env agora se parece com isso. Problema ainda está lá

root@chu:~# env
TERM=putty
SHELL=/bin/bash
SSH_CLIENT=**Censored**
SSH_TTY=/dev/pts/1
USER=root
LS_COLORS=rs=**Removed because wall of text**
PYTHONBREW_ROOT=/usr/local/pythonbrew
MAIL=/var/mail/root
PATH=/usr/local/pythonbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_GB.UTF-8
SHLVL=1
HOME=/root
LANGUAGE=en_US:en
LS_OPTIONS=--color=auto
PYTHONPATH=:/root/pymodules
LOGNAME=root
SSH_CONNECTION=**Censored**
_=/usr/bin/env
    
por Hubro 13.01.2012 / 20:38

1 resposta

9

O primeiro problema é que você tem $ LC_ALL definido como C . Se você definir $ LC_ALL, ele substituirá todas as outras configurações de localidade , incluindo $ LANG. Como a localidade "C" usa ISO-8859-1, tree não saberá sobre a disponibilidade Unicode e tentará alternar para a página de códigos gráficos VT100 (há quatro páginas de códigos comutáveis), que o PuTTY se recusa a fazer quando espera UTF-8 . Para corrigir isso, pare de definir LC_ALL no seu ambiente e tree usará gráficos Unicode.

O segundo problema é que sua variável $ LANG está incorreta - você não precisa especificar o conjunto de caracteres duas vezes. Defina LANG=en_GB.UTF-8 para corrigir isso.

O terceiro problema é que você está forçando tree a usar gráficos VT100. Não use a opção -A .

Mantenha o PuTTY configurado para o UTF-8 também.

( npm não é afetado por isso porque é hardcoded para usar gráficos Unicode, independentemente da localidade.)

    
por 13.01.2012 / 20:55