Unterschiedliche Ergebnisse für ls beim Zugriff auf Ubuntu über SSH von verschiedenen Clients (Windows-PuTTy, Mac-Terminal)

15

Betrachten Sie die folgende Verzeichnisstruktur , die auf einem entfernten Ubuntu-Server (genauer gesagt Ubuntu 16.04.4 LTS (GNU / Linux 4.4) auf dem Bildschirm angezeigt wird ls -l "$dir"( $direine Bash-Variable, die für einen Ordner auf demselben Server steht, einige Ebenen höher) .0-116-generisches 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

Dies kommt von einem MacBook und verwendet das eingebaute Terminal und die sshsofort einsatzbereite Installation von (OS X Version 10.13.3, wie mir das Terminal mitteilt).

Betrachten Sie im Vergleich denselben Server, auf den von einem Windows-Computer aus zugegriffen wird, auf dem PuTTy Version 0.70 ausgeführt wird:

-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

Beachten Sie die unterschiedliche Sortierung der ersten 6 Dateien in jedem Bild.

Wenn man bedenkt, dass die Befehle auf dem Server und nicht auf den Client-Computern ausgeführt werden, würde man keinen Unterschied zwischen den beiden Ausgaben erwarten. Was ist der Grund, warum sie nicht identisch sind?

Bearbeiten 1: Wie in den Kommentaren erwähnt, habe ich überprüft und das Mac-Terminal ist auf eingestellt, xterm-256colorwährend das Windows -Terminal auf eingestellt ist xterm. Eine schnelle Änderung der Mac-Einstellungen xtermhatte keine Auswirkungen.

Bearbeiten 2: Wie in den Kommentaren erwähnt, habe ich versucht, ausgeführt whereis ls, die den angemessenen Ort gibt, den Sie erwarten würden, zu finden ls- dh bin/ls.

Bearbeiten 3: Die Terminal-Bilder wurden entfernt und gemäß diesem Meta-Post gegen korrekt formatierten Code eingetauscht .

Edit 4: Es wurden Anführungszeichen hinzugefügt "$dir", um Probleme mit Leerzeichen zu vermeiden.

t0mgs
quelle
Bitte denken Sie daran, Ihre Variable in Anführungszeichen zu setzen ls -l "$dir". Wenn der Ordnername kein Leerzeichen enthalten würde, würde dies zu einem Unsinn führen.
Paddy Landau
@PaddyLandau du hast recht. Hat das bearbeitet.
24.

Antworten:

30

Sortierreihenfolge durch die locale - Variablen definiert ist LC_ALL, LC_COLLATEund LANG(in dieser Reihenfolge, wobei die erste die stärkste). Dies sind auch einige der wenigen Variablen, die normalerweise vom ssh-Client festgelegt werden können. Überprüfen und vergleichen Sie diese Variablen. Möglicherweise möchten Sie sie auf einen genau definierten Wert auf dem Server setzen (z. B. in .bash_profile) oder sicherstellen, dass Ihre ssh-Clients denselben konsistenten Wert festlegen.

egmont
quelle
4

Was schließlich funktionierte, war der Unterabschnitt "Stoppen der Weiterleitung des Gebietsschemas vom Client" in dieser Antwort . Kommentieren Sie einfach die SendEnv LANG LC_*Zeile unter Hostin der lokalen /etc/ssh/ssh_config Datei aus. Eine Erklärung dazu finden Sie hier .

t0mgs
quelle