Różne wyniki dla ls podczas uzyskiwania dostępu do Ubuntu przez SSH z różnych klientów (Windows-PuTTy, terminal Mac)

15

Rozważ następującą strukturę katalogów, wydrukowaną na ekranie za pomocą ls -l "$dir"( $dirjest to zmienna bash stojąca dla niektórych folderów na tym samym serwerze, kilka poziomów w górę), na zdalnym serwerze Ubuntu (a dokładniej Ubuntu 16.04.4 LTS (GNU / Linux 4.4 .0-116-ogólne 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

To pochodzi z MacBooka i korzysta z wbudowanego terminala i sshgotowej instalacji (OS X wersja 10.13.3, jak mi mówi terminal).

Rozważmy, dla porównania, ten sam serwer, do którego uzyskano dostęp z komputera z systemem Windows i systemem PuTTy w wersji 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

Zwróć uwagę na różne sortowanie pierwszych 6 plików na każdym obrazie.

Biorąc pod uwagę, że polecenia działają na serwerze, a nie na komputerach klienckich, nie można oczekiwać żadnej różnicy między tymi dwoma wyjściami. Jaki jest zatem powód, dla którego nie są identyczni?

Edycja 1: Jak wspomniano w komentarzach, sprawdziłem, a terminal Maca jest ustawiony na, xterm-256colorpodczas gdy Windows jest ustawiony na xterm. Szybka zmiana ustawienia komputera Mac xtermnie przyniosła żadnego efektu.

Edycja 2: Jak wspomniano w komentarzach, próbowałem uruchomić whereis ls, co daje rozsądną lokalizację, której można się spodziewać ls- tj bin/ls.

Edycja 3: Pozbyłem się obrazów terminala, zamieniłem je na poprawnie sformatowany kod zgodnie z tym postem .

Edycja 4: Dodano cytaty, "$dir"aby zapobiec problemom ze spacjami.

t0mgs
źródło
Proszę pamiętać, aby podać zmienną, a więc: ls -l "$dir". Bez tego, gdyby nazwa folderu zawierała spację, uzyskałbyś nonsensowny wynik.
Paddy Landau
@PaddyLandau masz rację. Edytowałem to.
t0mgs

Odpowiedzi:

30

Kolejność sortowania określone przez zmienne kodowej LC_ALL, LC_COLLATEi LANG(w tej kolejności, przy czym pierwszy jest najsilniejsze). Są to również niektóre z niewielu zmiennych, które zwykle mogą być ustawione przez klienta ssh. Sprawdź i porównaj te zmienne. Możesz ustawić je na dobrze zdefiniowaną wartość na serwerze (np. In .bash_profile) lub upewnić się, że klienci ssh ustawiają tę samą spójną wartość.

egmont
źródło
4

Ostatecznie działało podsekcja „Zatrzymaj przekazywanie ustawień regionalnych od klienta” w tej odpowiedzi . Po prostu skomentuj SendEnv LANG LC_*wiersz Hostw pliku lokalnym /etc/ssh/ssh_config . Kilka wyjaśnień na temat tego, co robi można znaleźć tutaj .

t0mgs
źródło