it-swarm-ja.com

なぜANSIシンボルがPuTTY / Debianで機能しないのですか?

apt-get install treeを使用してDebianにインストールした素晴らしいアプリケーションtreeには、ANSIグラフィックを使用して出力を描画するオプションがあります。その出力は次のようになります。

。
 tqq node_modules 
 xtqqコーヒースクリプト
 x tqq eco 
 x tqq express 
 x tqq forever 
 x mqq stylus 
 tqq package.json 
 mqq src 
 mqqdaemontest.coffee 

これは明らかに間違っています。これらは私のLANG=en_GB.UTF-8 UTF-8およびLC_ALL=C環境変数です。 PuTTYはUTF-8も期待するように設定されています。 PuTTYを「フォントエンコーディングを使用」に変更すると、tree -Aは正しく表示されますが、npm listは壊れて、次のようになります。

├──[email protected]
├─┬[email protected]
â”、 └──[email protected]
├─┬[email protected] 2.5.5 
â”、├─┬[email protected] 1.8.5 
â”、â”、└──手ごわい@ 1.0.8 
â”、├──[email protected]
â”、├──[email protected]
â”、└──[email protected]
 .. .. 

これらはすべて正しく機能するはずなので、どこかで設定が間違っていると思います。誰かが私が正確にどこにチューニングするのを手伝ってもらえますか?


編集:私のenvは次のようになりました。問題はまだあります

 root @ chu:〜#env 
 TERM = PuTTY 
 Shell =/bin/bash 
 SSH_CLIENT = ** Censored ** 
 SSH_TTY = /dev/pts/1
USER=root
LS_COLORS=rs=**テキストの壁のために削除** 
 PYTHONBREW_ROOT =/usr/local/pythonbrew 
 MAIL =/var/mail/root 
 PATH =/usr/local/pythonbrew/bin:/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin :/ bin 
 PWD =/root 
 LANG = en_GB.UTF-8 
 SHLVL = 1 
 HOME =/root 
 LANGUAGE = en_US: en 
 LS_OPTIONS = -color = auto 
 PYTHONPATH =:/ root/pymodules 
 LOGNAME = root 
 SSH_CONNECTION = ** Censored ** 
 _ =/usr/bin/env 
6
Hubro

最初の問題は$ LC_ALLがCに設定されているです。 $ LC_ALLを設定すると、$ LANGを含む他のすべてのロケール設定を上書きになります。 「C」ロケールはISO-8859-1を使用するため、treeはUnicodeの可用性を認識せず、VT100グラフィックコードページ(4つの切り替え可能なコードページがあります)に切り替えようとしますが、PuTTYはこれを予期したときに拒否します。 UTF-8。これを修正するには、環境でのLC_ALLの設定を停止しますおよびtreeはUnicodeグラフィックを使用します。

2番目の問題は、$ LANG変数が正しくない –文字セットを2回指定する必要がないことです。これを修正するには、LANG=en_GB.UTF-8を設定します。

3番目の問題は、VT100グラフィックスを使用するようにforceingtreeしていることです。 -Aオプションは使用しないでください。

PuTTYをUTF-8用に構成したままにします。

npmは、ロケールに関係なくUnicodeグラフィックを使用するためにハードコードであるため、この影響を受けません。)

9
user1686