5分くらいでWindows TerminalへのGit Bashの追加から日本語文字化けを直すまでの流れ

2024/02/14に公開

はじめに

Windows TerminalにGit Bashを追加する際に少し手間取ったため,備忘録として当記事を書きました.

Windows TerminalプロファイルへのGit Bashの追加

Windows TerminalでGitBashを開けるようにするには,Windows Terminalの設定からGit Bashのプロファイルを追加する必要があります.
手順としては以下となります.

手順

  1. Windows Termalの設定から「新しいプロファイルを追加します」を選択
  2. コマンドラインの設定項目に以下の値を設定する
    値:{Git Bashのパス} -l
    ( 私の環境の場合は➔ C:\Program Files\Git\bin\bash.exe -l )
    ( -l オプションは後述する問題に対応するために追加しています)
  3. 設定を保存し,Windows Terminalを再起動する

Git Bashのファイル表示の文字化けを直す

前述の設定によってWindows TerminalからGit Bashを起動できるようになりましたが,私の環境では起動したGit Bashで日本語のファイル名が□などによる文字化けが発生しました.
こちらの原因はGit Bashのロケール設定だったため,これを変更します.

手順

  1. Git Bashでlocaleコマンドをうち,現在のロケールを確認する
    (ここのロケールの値をja_JP.utf8にすることで正しく表示されるようになります)
  2. 以下のコマンドを逐次実行する.
export LC_ALL=ja_JP.utf8
export LANG=ja_JP.utf8
export LANGUAGE=ja_JP.utf8
export LC_CTYPE="ja_JP.utf8"
export LC_NUMERIC="ja_JP.utf8"
export LC_TIME="ja_JP.utf8"
export LC_COLLATE="ja_JP.utf8"
export LC_MONETARY="ja_JP.utf8"
export LC_MESSAGES="ja_JP.utf8"
  1. 再度localeコマンドで確認する
    ロケールの値がja_JP.utf8になっていれば成功です

プロファイルによるロケール変更の自動適用

前述の項のロケール変更は,コマンドを実行したGit Bashのインスタンスにのみ適用されるため,再度起動するたびにロケール変更を行う必要があります.
Git Bash起動時にプロファイルを読み込むことでこの手間を省略することができます.

WindowsのGit Bashは起動時にホームディレクトリに存在する.bash_profile内のコマンドを実行します.そのため,以下の手順によってプロファイルを作成します.

手順

  1. code ~/.bash_profileでプロファイルを作成する
  2. ファイル内に以下をペーストし,保存する
export LC_ALL=ja_JP.utf8
export LANG=ja_JP.utf8
export LANGUAGE=ja_JP.utf8
export LC_CTYPE="ja_JP.utf8"
export LC_NUMERIC="ja_JP.utf8"
export LC_TIME="ja_JP.utf8"
export LC_COLLATE="ja_JP.utf8"
export LC_MONETARY="ja_JP.utf8"
export LC_MESSAGES="ja_JP.utf8"
  1. Bashを再起動して,localelsコマンドなどで適用を確認

-lオプションについて

通常であればホームディレクトリ以下の.bash_profileを読み込むはずだが,私の環境ではプロファイルが読み込まれませんでした.そのため少し調べたところ,-lオプションをつけてログインシェルとしてBashを開くことで,.bash_profileを読み込むらしいので試してみるとプロファイルが読み込まれるようになりました.これが,Windows Terminalのプロファイル設定で-lオプションを追加した理由です.

Git Bashのタブタイトルの変更

Git BashのタブのタイトルはWindwos Terminalからの変更が適用されません.
変更については,以下のコードを.bash_profileに追加することでできます.

export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
echo -ne '\033]0;'"{タブのタイトル}"'\a'

また,以下のコードのように.bash_profileに関数として定義するとコマンドラインからsettitle "タブタイトル名"で適宜タイトルを変更することができるようになります.

.bash_profile

settitle () {
  export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
  echo -ne '\033]0;'"$1"'\a'
}

Git Bash

settitle "New Title"

参考

https://ygkb.jp/3494#ロケールの確認-locale
https://neos21.net/blog/2018/12/25-02.html
https://learn.microsoft.com/ja-jp/windows/terminal/tutorials/tab-title
https://www.madopro.net/entry/bash_on_windows_bashrc

Discussion