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 xterm
name__. Un changement rapide du paramètre du Mac en xterm
n'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.
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 .
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.