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

15

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

-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 vient d'un MacBook et utilise le terminal intégré et l'installation sshprête à l'emploi de (OS X version 10.13.3, comme le terminal me l'indique).

Considérez, en comparaison, le même serveur accessible à partir d'une machine Windows exécutant PuTTy version 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

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'attendrait à aucune différence entre les deux sorties. Quelle est la raison pour laquelle ils ne sont pas identiques, alors?

Edit 1: Comme mentionné dans les commentaires, j'ai vérifié et le terminal du Mac est réglé sur xterm-256colortandis que celui de Windows est réglé sur xterm. Un changement rapide du paramètre du Mac xtermn'a eu aucun effet.

Edit 2: Comme mentionné dans les commentaires, j'ai essayé de courir whereis ls, ce qui donne l'emplacement raisonnable que vous attendez ls- c'est-à-dire bin/ls.

Edit 3: Débarrassé des images du terminal, les a échangées contre du code correctement formaté selon cette méta-publication .

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

t0mgs
la source
S'il vous plaît rappelez - vous de citer votre variable, ainsi: ls -l "$dir". Sans cela, si le nom du dossier devait contenir un espace, vous obtiendriez un résultat absurde.
Paddy Landau du
@PaddyLandau vous avez raison. J'ai édité ça.
t0mgs

Réponses:

30

Tri est défini par les variables locale LC_ALL, LC_COLLATEet LANG(dans cet ordre, le premier étant le plus fort). 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.

egmont
la source
4

Ce qui a finalement fonctionné était la sous-section «Arrêter le transfert des paramètres régionaux du client» dans cette réponse . Il suffit de commenter la SendEnv LANG LC_*ligne sous Hostdans le fichier local /etc/ssh/ssh_config . Quelques explications sur ce qu'il fait peuvent être trouvées ici .

t0mgs
la source