【WSL入門】第2回 避けては通れないWSLとWindows 10との文字コードの違い:ITの教室
WSLを活用するためには、Windows OSとWSLの関係を理解するのが第一歩。基本となるWindows 10とWSLの文字コードの違いなどを理解しよう。
「ITの教室 WSL入門」では、WSLを活用するための基礎をインストールから解説していく。
- 第1回 Windows 10標準Linux環境WSLを始めよう
- 第2回 避けては通れないWSLとWindows 10との文字コードの違い(本記事)
- 第3回 WSL活用の落とし穴:LinuxからWindowsフォルダへのアクセス完全マスター
- 第4回 bashの展開機能と正規表現の基礎
Windows 10の中で、Linuxを動作させるWindows Subsystem for Linux(WSL)では、フル機能のコマンドやコマンドインタープリター(シェル)を利用でき、高度なコマンドライン機能を持つ(WSLのインストール方法については、「第1回 Windows 10標準Linux環境WSLを始めよう」参照のこと)。
WSLにUbuntuをインストールしたら、マニュアルの日本語化などを行おう。
WSLの基本設定 「パッケージのインストール」と「日本語対応」
Linux/UNIXでは、基本的な利用方法は、オンラインマニュアルをmanコマンドで検索して行う。コマンド名が分かっているなら、「man bash」などのようにmanコマンドに引数としてコマンド名を付けて実行する。
コマンド名が分からない場合には、キーワード検索を行う。例えば、「man -k editor」という感じだ。実際の使い方についてはmanコマンドのオンラインマニュアルを見てほしい。
パッケージのアップデートを実行しよう
WSL用にMicrosoft StoreからUbuntuをインストールしただけの状態では、オンラインマニュアルは全て英語のままになっている。これは、標準状態が英語のままだからだ(正確にはCロケールという状態)。全てではないが、オンラインマニュアルには日本語化されているものもあるので、これをインストールしよう。
一般にUbuntuでは、aptコマンドを使ってパッケージのインストールを行う。Ubuntu用のパッケージなどが公開されているサイトを「リポジトリ」といい、aptコマンドはリポジトリの情報を持っているため、最新のパッケージをダウンロードして組み込むことができる。パッケージのインストールに関しては、別途機会を改めて解説するので、今回は、こんなコマンドを使うということだけ理解してほしい。まずは、リポジトリからパッケージ情報をダウンロードしてローカルのデータベースを最新にしておく。
sudo apt update
sudoは、管理者権限でコマンドを実行するためのものだ。これを付けないと管理者権限が必要なコマンドを実行できない。また、管理者のパスワード(Ubuntuを最初に実行したときに登録したパスワード)を聞いてくる。
このコマンドを実行すると“XXX packages can be upgraded. Run 'apt list --upgradable' to see them.”や「アップグレードできるパッケージが xxx 個あります。……」(日本語化している場合)といったメッセージが最後に表示されることが少なくない。これは、インストールされているパッケージの中に更新されたものがあることを示す。古いものはセキュリティ的な問題が出る可能性があるので、なるべくアップグレードしておこう。
Windows OSと違って、Linux系のパッケージシステムは、パッケージ同士の依存関係を把握しているため、何かをアップグレードしたからといってほかのアプリがおかしくなることはほとんどない。もちろん、人のやることなので、アップグレードしたプログラム内で新たなバグが発生することはあるが、他のパッケージやUbuntu自体までにアップグレードの影響が及ぶことは少ない。
更新されたパッケージをまとめてアップグレードするには、「sudo apt upgrade」を実行する。取りあえず、「apt update」と「apt upgrade」は組にして覚えておいた方がいいだろう。
その後、日本語化を行う。詳細なやり方は、Tech TIPS「WSLのUbuntu環境を日本語化する」を参考にしていただきたいが、以下のコマンドを実行する。
sudo apt -y install language-pack-ja
sudo update-locale LANG=ja_JP.UTF8
sudo apt -y install manpages-ja manpages-ja-dev
それぞれ、日本語パッケージ(language-pack-ja)のインストール、ロケール情報の更新、日本語マニュアルページ(manpages-jaとmanpages-ja-dev)のインストールである。なお、Window 10 October 2018 Update以降のWSLは、何もしなくてもタイムゾーンを正しく認識しているようなので、タイムゾーン設定は不要である。
最後に、WSLを一回終了させる(WSLで全てのウィンドウを閉じる。なお、バックグラウンドプロセスを起動したなら止めておく)。これで、再度WSLのウィンドウを開けば、ロケールが「ja_JP.UTF-8」になっているはずである。これは、localeコマンドで確認できる。
日本語化でマニュアルの日本語による検索も可能に
WSL上での日本語の入力だが、WSLが動作しているWindows 10のコンソールは、Windows OS側の日本語IME経由での入力が可能なので、特にWSL側にIMEを入れる必要はないと思われる。
日本語マニュアルがインストールされたため、bashのマニュアルなどは日本語で表示されるはずである。また、-kオプションによるキーワード検索でも、「man -k シェル」などといった日本語キーワードによる指定が可能になる。
なお、日本語のマニュアルは、英語のマニュアルからの翻訳であるため、タイミングによっては、内容が古くなっている可能性がある。マニュアルとコマンドの挙動が違うような場合、英語マニュアルを参照する必要が出てくる。
このようなときには、「env LANG=C man コマンド名」などとして、$LANGを一時的にCロケールにしてmanを実行させるとよい。envは環境変数を指定してコマンドを起動するものである。詳しくはmanで調べてほしい。とにかく、Linux/UNIX系は、知りたいことがある場合には、manコマンドを使うというのが定石だ。細かいオプションなどについては解説できないので、より詳しく知りたい場合はmanコマンドでマニュアルを参照してほしい。
WSLのUbuntuディストリビューションでは、manコマンドの中で検索が利用できる。それには「/」を入力して検索語を入れる。日本語化してあれば、もちろん日本語でも検索が可能だ。
検索語は、manページ中では反転表示(コンソールの設定にも依存する)となり、「n」で次の検索語位置に進み、「N」で前に戻る。これらの操作は、実際には、lessと呼ばれるプログラムの機能だ。manコマンドは、lessやmoreといったページャープログラムを利用してページを表示している。
WSLの中からWin32コマンドを使う
Copyright© Digital Advantage Corp. All Rights Reserved.