このページの本文へ

Windows Info 第78回

Windows Subsystem for LinuxのBashの初期設定【後編】

2016年12月11日 10時00分更新

文● 塩田紳二 編集● ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回は、bashのユーザーディレクトリ側の初期設定ファイルについて解説する。結論からいうと、WSLで最初に起動するbashは、「ログイン・シェル」ではなく、「インタラクティブ・シェル」であり、前回説明した「/etc/bash.bashrc」と「~/.bashrc」が動作したのちにプロンプト表示(コマンド入力待ち)となる。このため、個人の基本的な設定は、「~/.bashrc」に記述すればよい。

 やはり前回説明した、/etc/profileは一般的なLinuxの場合システムコンソールからの起動では実行されるが、WSLの場合、/etc/profileは実行されず、bashは「インタラクティブ・シェル」として起動される。このため、WSLでは/etc/profileに何か記述しても実行されることがない。この部分、Linux一般としては正しくとも、WSLの記述としては、前回の記述は誤解させてしまう内容だった。ここでお詫びさせていただく。

 「/etc/bash.bashrc」は、WSLでは必ず実行される。ただしWSLでは、複数ユーザーを登録できるものの、WSLが起動されるときには、インストール時に登録したユーザーアカウントが必ず選択されてしまうため「すべてのユーザー」という考え方がほとんど無意味なものになっている。

 もちろん、ここに記述を追加することは無意味ではないが、~/.bashrcに記述しても効果としては同一である。だとしたら、ユーザーのホームディレクトリ以下で、バックアップなどが行いやすい「~/.bashrc」に設定を書いておくほうがいいというのが結論である。

 また、/etc/profileが実行されることがないため、/etc/profile.dにスクリプトを追加して起動時に初期設定などを行うものも動作できないことになる。このあたりソフトウェアによりさまざまなので注意が必要だ。

シェルを起動する

 Linuxで/home以下のユーザーディレクトリに置かれるbashの設定ファイルには、以下のものがあるとされている。

~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
※:~/はユーザーのホームディレクトリへのフルパスを表す表記

 この4つのうち、WSLのUbuntuでは、ユーザーのホームディレクトリにおかれているのは「~/.profile」「~/.bashrc」の2つだけだ。bashのログイン時の動作としては、「~/.bash_profile」「~/.bash_login」「~/.profile」は、このうちの1つだけが有効になるとされている。

 Bashのリファレンスマニュアル(Bash Reference Manual)によれば、「--login」オプションにより起動されたbashは、この順でファイルを探し、最初に見つけたものだけを実行するとされている(前回の記述もこれを元にしたもの)。

 しかし、WSLの起動時に使われるbashでは、「~/.bash_profile」「~/.bash_login」「~/.profile」のどれも実行せず、「/etc/bash.bashrc」が実行されたあと「~/.bashrc」のみが実行される。

 ちなみにbashに「--login」オプションを付けて起動すると、前記のマニュアルにある通り「~/.bash_profile」「~/.bash_login」「~/.profile」の優先順位でログイン時にスクリプトが実行される。この点でマニュアルに偽りはないのだが、WSL起動時のbashの起動方法は、違うものになっていて、少なくとも/bin/bashに「--login」オプションを渡しただけのものにはなっていないようだ。

 bashなどのシェルは、何個も起動できる。このうちログイン時に起動された最初のシェルを「ログイン・シェル」という。ログイン・シェルなどから起動された2つめ以降のシェルのうち、キーボードから入力を受け付けるものは「インタラクティブ・シェル」という。

 WSLで最初に起動するbashは、「ログイン・シェル」ではなく「インタラクティブ・シェル」になっているようだ。つまり、bashが起動するまでに実行されるのは、

/etc/bash.bashrc
~/.bashrc

の2つだけだ。WSLでUbuntuにログインする場合、Linux(Ubuntu)のシステムコンソールのログインとは違い、X Window System上でターミナルエミュレーターウィンドウ内でシェルを起動したのと同じ状態になっていると思われる。

 そのためか、従来のLinuxのコマンドで、通常のログインシーケンスを前提にしているコマンドは動作しないことがある。たとえば、ログインシェルを変更するchshコマンドを使って、ログインシェルを変更することもできない。正確にいうと、chshコマンドは成功して、/etc/passwdファイルなどは書き換わるのだが、WSLを起動したときには、設定にかかわらず、bashが起動してしまう。

具体的な設定の追加など

 また、環境変数定義などを~/.bashrcに記述する場合、ファイルの先頭か最後に注釈行(#で始まる行)を置き、自分が記述したことを明確にしておく。人の記憶は確かなようで、場合によってはすぐに忘れてしまうことがある。

 また、オリジナルの.bashrcとの違いをすぐに区別できるように注釈行を付けておいたほうがいい。そうしないと、他のPCでWSLを使うことになった場合などに、何をコピーすればいいのかがわからなくなる。なお、.bashrc内での環境変数の定義だが、bashでは、exportコマンドでシェル変数の定義と環境変数への移行を一度に定義できるので、

export 環境変数名1=設定値 環境変数名1=設定値……

という形式で記述できる。すでにbashのシェル変数が定義されているなら、

export シェル変数名1 シェル変数名2……

とすることも可能。

 コマンドプロンプトで環境変数を確認するには、printenvコマンドを使う。

環境変数は、printenvコマンドで表示できるgrepを併用することで特定の文字列を含む環境変数だけを表示可能。bash内から環境変数を定義するにはexportを使う

 次回は、WSLのUbuntuに簡単にソフトウェアを追加するためのパッケージ管理コマンドについて解説する。

カテゴリートップへ

この連載の記事
1
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥39,800
2
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
3
【整備済み品】富士 通 2in1ノートパソコン V727【本体のみ】/第7世代Core M3/12.3型タッチパネル1920×1080/メモリ 8GB/SSD 128GB/Win 11/MS Office 2019/USB 3.1/Type-C/無線WIFI/オーディオ内蔵/WEBカメラ/初期設定済
【整備済み品】富士 通 2in1ノートパソコン V727【本体のみ】/第7世代Core M3/12.3型タッチパネル1920×1080/メモリ 8GB/SSD 128GB/Win 11/MS Office 2019/USB 3.1/Type-C/無線WIFI/オーディオ内蔵/WEBカメラ/初期設定済
¥9,600
4
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥29,800
5
【Amazon.co.jp限定】 ASUS ノートパソコン Vivobook 15 X1502VA 15.6インチ インテル Core i7 13620H メモリ16GB SSD 1TB Windows 11 バッテリー駆動 8.9時間 重量1.7kg PC Game Pass 3ヶ月利用権付き クワイエットブルー X1502VA-I7H161W
【Amazon.co.jp限定】 ASUS ノートパソコン Vivobook 15 X1502VA 15.6インチ インテル Core i7 13620H メモリ16GB SSD 1TB Windows 11 バッテリー駆動 8.9時間 重量1.7kg PC Game Pass 3ヶ月利用権付き クワイエットブルー X1502VA-I7H161W
¥104,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥1,880
4
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥660
5
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
7
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
8
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥2,000
9
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
10
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン