WSL2の起動と初期設定
Windows Terminalを起動したら
いくつかやっておいたほうが良い設定を列挙しておきましょう。
リポジトリを日本のミラーに変更
日本に住んでいるのなら,
$ sudo sed -i 's,//archive.ub,//jp.archive.ub,g' /etc/apt/sources.list $ sudo apt update $ sudo apt full-upgrade
もし
なお,
- ※3
- WSL2の中でsystemdを動かす方法は存在します。
日本語ロケールの設定
これは人によりけりだと思いますが,
$ sudo apt install language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8
たとえば単に日本語ロケールになれば良く,
$ sudo locale-gen ja_JP.UTF-8 $ sudo update-locale LANG=ja_JP.UTF-8
ただしaptコマンドのように翻訳データがLanguage Pack以外の方法で提供されるソフトウェアについては,
WSLの再起動
systemdが動いていないため,
> wsl -t ubuntu > wsl
「-t
」
WSL起動時のカレントディレクトリを変更する
Windows Terminalを起動すると,%USERPROFILE%
」/mnt/
」
普通のUbuntuのようにホームディレクトリにしたい場合は,~/.profile
」cd "$HOME/"
」
まずはWindows Terminalのタブの右端にある,//
」
これによりWindows Terminalのプルダウンメニューもしくはタスクバーのアイコンを右クリックして
なお,
ちなみにWindows TerminalはJSONスクリプトからさらに細かい設定が可能です。好みに応じて追加の設定をすると良いでしょう。
プロンプトの調整方法
WSLはコマンドのプロンプト文字列としてユーザー名@マシン名:カレントディレクトリ$
」
- ※4
- 「WSL プロンプト」
で検索すると高確率で 「コマンドプロンプト (cmd. exe)」の情報がヒットしてしまいます。CLIにおいてコマンドプロンプト (command prompt) とは, cmd. exeではなく, 直前のコマンドが完了し次のコマンドの入力を促す (prompt) ための文字列を意味します。Ubuntuで端末を起動したときに表示される 「 ユーザー名@ホスト名:カレントディレクトリ$
」がコマンドプロンプトです。これはOSやシェルによって異なりますし, ユーザーが任意の値を設定できます。ちなみにWindowsのコマンドプロンプトはpromptコマンドでコマンドプロンプトを変更できます。言い換えると, Windowsのcmd. exeはpromptコマンドでコマンドプロンプト文字列を変更できるということです。
ただUbuntuホストの時は上記の設定でもそれなりに実用的ではあるのですが,
bashの場合,~/.bashrc
」
case "$TERM" in
xterm*|rxvt*)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]WSL@$WSL_DISTRO_NAME\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
;;
screen*)
PS1="${debian_chroot:+($debian_chroot)}\[\e[38;5;202m\]\$(byobu_prompt_status)\[\e[38;5;245m\]WSL\[\e[00m\]@\[\e[38;5;172m\]$WSL_DISTRO_NAME\[\e[00m\]:\[\e[38;5;5m\]\w\[\e[00m\]\$(byobu_prompt_symbol) "
;;
*)
;;
esac
これによりプロンプトが,WSL@Ubuntu:~$
」
環境変数PS1
がプロンプトを司る部分です。これに適切な値を代入すれば,PS1
は.bashrc
に書いてあったものをベースに作っています。環境変数TERM
がscreen*
のほうは,/usr/
からByobuのPS1
を持ってきています。
オリジナルからの変更点は次の2箇所です。
- ユーザー名を表示する
「 \u
」を 「 WSL
」に固定化 - マシン名を表示する
「 \h
」を 「 $WSL_
」DISTRO_ NAME に変更
ユーザー名の固定化はどうせWSLにおいてマルチユーザー的な使い方はしないだろうという措置です。ただしsudo -i
」
ホスト名はWindowsのマシン名の代わりにWSLのディストリビューション名を表示するようにしてみました。
プロンプトのカスタマイズは,