web-dev-qa-db-ja.com

異なるクライアント(Windows-PuTTY、Mac-Terminal)からSSH経由でUbuntuにアクセスした場合のlsの異なる結果

ls -l "$dir"$dirは同じサーバー上のいくつかのフォルダーを表すbash変数で、数レベル上にあります)、リモートUbuntuサーバー(より正確には、 Ubuntu 16.04.4 LTS(GNU/Linux 4.4.0-116-generic 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

これはMacBookから来ており、ビルトインターミナルと、すぐに使用できるsshのインストールを使用しています(OS Xバージョン10.13.3、ターミナルが私に言うように)。

比較して、同じサーバーがPuTTYリリース0.70を実行しているWindowsマシンからアクセスすることを考慮してください:

-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

各画像の最初の6つのファイルのソートが異なることに注意してください。

コマンドがクライアントコンピューター上ではなくサーバー上で実行されていることを考えると、2つの出力に違いはないはずです。それでは、それらが同一ではない理由は何ですか?

編集1:コメントで述べたように、私はチェックし、Macの端末はxterm-256colorに設定され、Windowsの端末はxterm。 Macの設定をxtermにすばやく変更しても効果はありませんでした。

編集2:コメントで述べたように、whereis lsを実行してみました。これにより、lsを見つけるのに適切な場所がわかります。 -すなわちbin/ls

Edit 3:端末イメージを取り除き、 this meta post に従って適切にフォーマットされたコードと交換しました。

編集4:スペースの問題を防ぐために、"$dir"の周りに引用符を追加しました。

15
t0mgs

最終的に機能したのは、 this answer の「クライアントからのロケールの転送を停止」サブセクションでした。 localSendEnv LANG LC_*ファイルのHostの下の/etc/ssh/ssh_config行をコメントアウトするだけです。それが何をするかについてのいくつかの説明を見つけることができます こちら

4
t0mgs

ソート順は、ロケール変数LC_ALLLC_COLLATE、およびLANGによって定義されます(この順序で、最初が最も強力です)。これらは、通常sshクライアントによって設定できる数少ない変数の一部です。これらの変数を確認して比較します。サーバー上で明確に定義された値(たとえば、.bash_profile)に設定するか、sshクライアントが同じ一貫した値を設定するようにします。

30
egmont