Considere a seguinte estrutura de diretórios, impressa na tela usando ls -l "$dir"
( $dir
é uma variável bash que está para alguma pasta no mesmo servidor, alguns níveis acima), em um servidor Ubuntu remoto (mais precisamente, Ubuntu 16.04.4 LTS (GNU / Linux 4.4) .0-116-genérico x86_64)):
-rw-r--r-- 1 user group 12 Apr 2 12:34 FILE1
-rwxr--r-- 1 user group 287 Apr 23 2017 File_
-rw-r--r-- 1 user group 0 Apr 21 2017 file_1
-rw-r--r-- 1 user group 272 Apr 3 22:16 myFile
-rw-r--r-- 1 user group 47633 Apr 11 14:01 myFile.txt
-rw-r--r-- 1 user group 37030 Apr 11 14:16 myfile1
-rw-r--r-- 1 user group 0 Apr 11 21:23 nothing_here
-rw-r--r-- 1 user group 2 Apr 22 2017 small_file
-rwxr-x--- 1 user group 262529 Apr 8 15:31 story
Isso é proveniente de um MacBook e usa o terminal ssh
interno e a instalação pronta para uso (OS X versão 10.13.3, como o terminal me diz).
Considere, em comparação, o mesmo servidor acessado de uma máquina Windows executando o PuTTy versão 0.70:
-rwxr--r-- 1 user group 287 Apr 23 2017 File_
-rw-r--r-- 1 user group 0 Apr 21 2017 file_1
-rw-r--r-- 1 user group 12 Apr 2 12:34 FILE1
-rw-r--r-- 1 user group 272 Apr 3 22:16 myFile
-rw-r--r-- 1 user group 37030 Apr 11 14:16 myfile1
-rw-r--r-- 1 user group 47633 Apr 11 14:01 myFile.txt
-rw-r--r-- 1 user group 0 Apr 11 21:23 nothing_here
-rw-r--r-- 1 user group 2 Apr 22 2017 small_file
-rwxr-x--- 1 user group 262529 Apr 8 15:31 story
Observe a classificação diferente dos 6 primeiros arquivos em cada imagem.
Considerando que os comandos estão sendo executados no servidor e não nos computadores clientes, não seria de esperar diferença entre as duas saídas. Por que eles não são idênticos?
Edit 1: Conforme mencionado nos comentários, verifiquei e o terminal do Mac está definido como xterm-256color
enquanto o Windows está definido como xterm
. Uma rápida mudança na configuração do Mac xterm
não teve efeito.
Edit 2: Como mencionado nos comentários, eu tentei correr whereis ls
, o que fornece a localização razoável que você esperaria encontrar ls
- ou seja bin/ls
.
Editar 3: Livre-se das imagens do terminal, troquei-as por código formatado corretamente, de acordo com este meta post .
Editar 4: adicionadas aspas "$dir"
para evitar problemas com espaços.
ls -l "$dir"
. Sem isso, se o nome da pasta contiver um espaço, você obterá um resultado sem sentido.Respostas:
Ordem de classificação é definido pelas variáveis de região
LC_ALL
,LC_COLLATE
eLANG
(nesta ordem, sendo o primeiro o mais forte). Essas também são algumas das poucas variáveis que geralmente podem ser definidas pelo cliente ssh. Verifique e compare essas variáveis. Você pode configurá-los para um valor bem definido no servidor (por exemplo, in.bash_profile
) ou garantir que seus clientes ssh definam o mesmo valor consistente.fonte
O que acabou por funcionar foi a subseção "Interromper o encaminhamento da localidade do cliente" nesta resposta . Apenas comente a
SendEnv LANG LC_*
linha abaixoHost
no arquivo local/etc/ssh/ssh_config
. Algumas explicações sobre o que faz podem ser encontradas aqui .fonte