web-dev-qa-db-fra.com

Résultats différents pour ls lors de l'accès à Ubuntu via SSH à partir de différents clients (Windows-PuTTY, Mac-Terminal)

Considérez la structure de répertoires suivante, imprimée à l’écran à l’aide de ls -l "$dir" ($dir est une variable bash représentant un dossier sur le même serveur, quelques niveaux plus haut), sur un serveur distant Ubuntu (plus précisément Ubuntu 16.04.4 LTS (GNU/X86_64 générique Linux 4.4.0-116)):

-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

Cela provient d'un MacBook et utilise le terminal intégré et l'installation prête à l'emploi de ssh(OS X version 10.13.3, comme le terminal me l'indique).

Considérons, en comparaison, le même serveur accessible à partir d'une machine Windows exécutant la version 0.70 de PuTTY:

-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

Notez le tri différent des 6 premiers fichiers de chaque image.

Étant donné que les commandes s'exécutent sur le serveur et non sur les ordinateurs clients, on ne s'attend à aucune différence entre les deux sorties. Quelle est la raison pour laquelle ils ne sont pas identiques, alors?

Edit 1: Comme indiqué dans les commentaires, j'ai vérifié et le terminal du Mac est défini sur xterm-256color tandis que celui de Windows est défini sur xtermname__. Un changement rapide du paramètre du Mac en xtermn'a eu aucun effet.

Edit 2: Comme indiqué dans les commentaires, j'ai essayé d'exécuter whereis ls, qui donne l'emplacement raisonnable dans lequel vous vous attendriez à trouver ls- i.e. bin/ls.

Edit 3: Supprimez les images de terminal, échangez-les contre un code correctement formaté conformément à cette méta-publication .

Edit 4: Ajout de guillemets autour de "$dir" pour éviter les problèmes d'espaces.

15
t0mgs

Ce qui a finalement fonctionné est la sous-section "Arrêter le transfert de la langue du client" dans cette réponse . Mettez en commentaire la ligne SendEnv LANG LC_* sous Host dans le fichier local /etc/ssh/ssh_config. On peut trouver quelques explications sur ce qu’il fait ici .

4
t0mgs

L'ordre de tri est défini par les variables de paramètres régionaux LC_ALL, LC_COLLATE et LANG (dans cet ordre, la première étant la plus forte). Ce sont également quelques-unes des rares variables qui peuvent généralement être définies par le client ssh. Vérifiez et comparez ces variables. Vous voudrez peut-être leur attribuer une valeur bien définie sur le serveur (par exemple, dans .bash_profile) ou vous assurer que vos clients ssh définissent la même valeur cohérente.

30
egmont