Linux版PowerCLIの文字化け

はじめに

スズケンです。vExperts Advent Calendar 2020 12/12の投稿になります。

adventar.org

f:id:ken1suzu:20201025163820p:plain:w360

前回Linux版PowerCLIのインストールについて書きました。

ken1suzu.hatenablog.com

今回は、その後会社でインストールしてみて、ハマった小ネタを書いてみたいと思います。

■家ではうまくいったのに・・・

会社でLinux版PowerCLIを入れるべく、まずPowerShellをインストールしたところ、PowerShellコマンドプロンプトでのコマンドの入力が化けるという事象が発生しました(下記は、自宅で事象を再現させた際の画面)。

f:id:ken1suzu:20201205112639p:plain

おかしいなぁ。なぜ化ける?lsと打っただけなのに。

決め打ちで入力したコマンドの結果は、ちゃんと文字化けせずに表示されるんですよね。 入力した文字列自体はちゃんと認識してくれていることは確かです。

Puttyの設定か?文字コードか?UTF8以外も試したけど、状況は何も変わりませんでした。

f:id:ken1suzu:20201205112652p:plain

文字コード以外のPutty設定を色々変えてみたけど、関係なさそうでした。

結局、会社と自宅のPutty設定を全部比較したけど、差が見つかりませんでした。

■ちょっと切り分けが進む

切り分けで、WebClientでLinuxPowerShellを入れたVMにコンソール接続してみると、文字化けしないことがわかりました。

だとすると、PowerShellのセットアップ自体は上手くいっているということがわかりました。

事象の内容が、ssh接続でpwshのコマンドプロンプトでの入力文字列が化ける」ということが明確になってきました。 そういや、入力文字列って正しく表示されるときには色付きだなぁと。ssh接続の時はその辺がうまくいかずに化けるのかなと。

とにかく、端末の設定の何かが悪いのだろうとは思いましたが、なかなか原因特定には至りませんでした。 文字化けしない自宅環境と会社環境でPuttyの設定に差がないのも確認したので、Putty設定以外の何かなんだろうと。

■問題解決

Linuxに詳しい私の部下があっさり解決してくれました。

何ということでしょう。

会社環境では、TERM=vt100 が標準設定になっていたのが原因でした。 これを、TERM=xterm に変更しただけで、文字化けは解消されました。

この情報を得て、文字化けしていなかった自宅環境でTERM=vt100で試したら、見事に事象が再現したのです。 (自宅環境のTERMは、デフォルトでxterm-256colorになってました)

※下記、どちらもlsと打った後、exitでpwshを抜けただけの操作になります

f:id:ken1suzu:20201205112707p:plain
TERM=vt100の場合

f:id:ken1suzu:20201205112721p:plain
TERM=xtermの場合

これでPowershell Server(Windows版)をLinux版PowerCLIに運用を切り替える道筋がつきました。 良かったです。

ただ、「TERM=vt100にしている人って世間でどれだけいるんだろうか?」という疑問は湧きました。うちの会社の場合、X-Window系のGUIは使ってないので、TERMをvt100にしているってことなんだろうとは思いますが。

私が見逃しているだけで、ひょっとしたらLinuxPowerShellを使う場合は、環境変数TERMはvt100ではNGです」って情報がどこかに書いてあったりしたのかなぁ(もし知っている方が居たら教えていただきたいです)。

■終わりに

意外なところに落とし穴があり、思いの外あっさり解決されてしまうものだと思いました。部下のskmtさんには感謝です。 私自身のLinuxの知識の浅さが露呈し、もっと勉強しなければいけないなと思った次第です。

改めて、環境変数TERMの役割を再認識をしたところで、話を終わりたいと思います。

12/6は、CJ さんの記事になります。

※ 本記事で記載されている会社名、製品名は、各社の登録商標または商標です。

■お知らせ

VMwareユーザ会(VMUG)に興味のある方は、

https://www.vmug.com/membership/membership-benefits

から入会していただけると幸いです。 部会でお会いできるのを楽しみにしております。

以上です。