web-dev-qa-db-ja.com

msysgitのsshは色を表示しません

コンソール2 を使用して msysgit のWindowsでBashシェルを起動しています。サーバー(SLESまたはRHLEサーバー)にsshしてlsを実行するか、viを使用すると、色が表示されません。ただし、 PuTTY を使用すると、色は正しく機能します。 Console 2、Bash、またはPuTTYで色のカスタマイズを行ったことがなく、サーバーの色(私の知る限り)はまったく変更されていません。

読んだ後 サーバーにSSH接続するとiTerm2は「ls」の色を失います 試してみましたls --color=alwaysそしてそれはいくつかの色を表示しますが、すべてではありません。実行可能ファイルとフォルダーの色(私の場合はそれぞれ緑と青)が表示されますが、Zipファイル(私の場合は赤である必要があります)は表示されません。繰り返しますが、PuTTYはこれらを正しく表示します。

何十もの異なるサーバーに定期的にアクセスし、他の管理者がそれらのサーバーを使用している方法と相互作用するため、色が必要な場所で一連のコマンドをエイリアスすることは、私にとって実行可能な解決策ではありません。

何か案は?

6
user192665

LS_COLORS環境変数を探していると思います。この記事には素晴らしい記事があります: http://www.bigsoft.co.uk/blog/index.php/2008/04/11/configuring-ls_colors

Console2は「実際の」コンソールエミュレーターですが、PuTTYはパイプを介してアプリケーションを実行します。

つまり、sshが「コンソールウィンドウなし」(パイプ)を検出すると、色の表示にANSIエスケープシーケンスを使用するように切り替わります。しかし、標準のWindowsコンソールはエスケープをサポートしていません。そのため、sshがエスケープを検出すると(それに応じてConsole2も)、ANSIが利用できないと見なし、win32APIの使用に切り替えます。

私はANSIをWindowsコンソールにもたらす2つのツールを知っています [〜#〜] ansicon [〜#〜] と私自身の ConEm ですが、msysはそれらについて知らず、 ANSI機能の検出。

しかし、私はこれについていくつか考えました-パイプターミナル(PTY)で実行されている特定のアプリケーションを欺く方法。

3
Maximus