はじめに
WSLにgenieを入れている方、そこそこいるのではないかと思います。
genieとはWSLでsystemd
をpid1
で実行させるためのツールで、systemctl
を使うために導入します。
genieについては以下のページが詳しいです。
問題点
genieを使う際は基本的にgenie -s
を実行してシェルに入ります。
通常の使い方ではprofileファイル等にコマンドを書いておいて、自動的にgenie
の環境に入るようにすると思います。
しかし、genie -s
は必ずホームディレクトリでシェルを実行され、環境変数を引き継ぎません。
これにより、IntelliJ IDEAのターミナルにWSLを指定していた場合に、
プロジェクトディレクトリではなくホームディレクトリが開かれてしまい、少々不便です。
解決
genie -s
ではなくgenie -c
を使うことで解決できます。
以下の通り、-s
はシェルを実行しますが、-c
はコマンドを実行します。
そして、-s
と違って-c
はカレントディレクトリや環境変数を保持します。
Commands:
-s, --shell Initialize the bottle (if necessary), and run a shell in it.
-c, --command <COMMAND> Initialize the bottle (if necessary), and run the specified command in it.
※ -c
と-s
以外は省略しています。
ということで、実際に設定するコマンドは以下のようになります。
wsl.exe genie -c "bash"
これをIntelliJ IDEAのターミナル設定のShell path:
部分に入力しましょう。
以上でターミナルがプロジェクトディレクトリで開くようになります。
おわりに
IntelliJ IDEAがWSLに対応する前からgenieを入れていたため、
これに気づくまではずっとIntelliJ IDEAのバグなんだと思っていました😅
PCが変わり、WSL環境を新たに構築する際にやっとgenie
が原因だと気づきました。
安易にツールのバグだと思い込むのは良くないですね🥺
参考
arkane-systems/genie
https://github.com/arkane-systems/genie
"Open a linux shell" and genie
https://github.com/arkane-systems/genie/wiki/%22Open-a-linux-shell%22-and-genie