Considérez la structure de répertoires suivante, imprimée à l'écran en utilisant ls -l "$dir"
( $dir
est 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 ssh
prê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-256color
tandis que celui de Windows est réglé sur xterm
. Un changement rapide du paramètre du Mac xterm
n'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.
ls -l "$dir"
. Sans cela, si le nom du dossier devait contenir un espace, vous obtiendriez un résultat absurde.Réponses:
Tri est défini par les variables locale
LC_ALL
,LC_COLLATE
etLANG
(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.la source
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 sousHost
dans le fichier local/etc/ssh/ssh_config
. Quelques explications sur ce qu'il fait peuvent être trouvées ici .la source