Rozważ następującą strukturę katalogów, wydrukowaną na ekranie za pomocą ls -l "$dir"
( $dir
jest 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 ssh
gotowej 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-256color
podczas gdy Windows jest ustawiony na xterm
. Szybka zmiana ustawienia komputera Mac xterm
nie 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.
ls -l "$dir"
. Bez tego, gdyby nazwa folderu zawierała spację, uzyskałbyś nonsensowny wynik.Odpowiedzi:
Kolejność sortowania określone przez zmienne kodowej
LC_ALL
,LC_COLLATE
iLANG
(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ść.źródło
Ostatecznie działało podsekcja „Zatrzymaj przekazywanie ustawień regionalnych od klienta” w tej odpowiedzi . Po prostu skomentuj
SendEnv LANG LC_*
wierszHost
w pliku lokalnym/etc/ssh/ssh_config
. Kilka wyjaśnień na temat tego, co robi można znaleźć tutaj .źródło