Vendo estranhos pontos de interrogação no bash shell

Vendo estranhos pontos de interrogação no bash shell

Percebi algo estranho em nossos servidores RHEL7: no shell sempre há pontos de interrogação retornados, envolvendo partes do texto. Mais ou menos assim:

rm file.txt
rm: remove regular file ?file.txt??

Ou isto:

rm 886- rm: cannot remove ?886-?: No such file or directory

Isso é normal?

Estou fazendo ssh de um desktop Ubuntu 16.04 para os servidores RHEL7 e usando screen. Poderia ser esta a origem das diferenças?

Responder1

rmestá tentando exibir um caractere que seu terminal não suporta. Isso é um sinal de que seulocalidadeas configurações estão erradas, especificamente LC_CTYPE. A LC_CTYPEvariável de ambiente deve ser definida pelo emulador de terminal e não alterada por nenhum script como .profileou .bashrc.

Você indica que está executando a tela. Se você iniciou a sessão screen em um local e anexou-a em outro local, então screen traduzirá caracteres não suportados para ?. Ele não pode alterar a configuração de localidade em aplicativos já em execução, como o shell que você está executando naquela janela - a maioria dos aplicativos não tem suporte para alterar as configurações de localidade dinamicamente. Vocêpodefaça isso no shell definindo a LC_CTYPEvariável. Para ver o que seu terminal espera, imprima o valor de LC_CTYPEantes de anexar à sessão de tela.

Para evitar dores de cabeça, adote configurações de localidade consistentes em todos os lugares. Hoje em dia UTF-8 é o padrão em todos os lugares, qualquer outra codificação deve ser usada apenas para compatibilidade com aplicativos ou dispositivos mais antigos.

informação relacionada