RubyMine で開いた Terminal で fish shell のパスがうまく動作していない

TL;DR

> ~/
$ cd /Applications/RubyMine.app/Contents/plugins/terminal

> /Applications/RubyMine.app/Contents/plugins/terminal
$ mv fish/ fish.back/

> /Applications/RubyMine.app/Contents/plugins/terminal
$ ln -s ~/.config/fish .

経緯

RubyMine のみで開発を行おうと奮闘している最中、 Terminal tab を開き、bundle exec rails ... とコマンドを入力すると bundlerが無いみたいですね。 gem install bundler してください。 と言われてしまうことがありました。 いつも iTerm からコマンドを入力すると実行できていたけどなぁ...と不思議に思い、実際に開いて入力してみると、正常にコマンドが実行される…… :thinking: なるほど分からん。となったので、ひとまず、 rubymine fish-shell [検索] として調べてみることに。すると以下の記事が。

blog.corocn.jp

一通り読んでみると、この記事の著者は Intellij Ulitimate を使用している際に、同様の現象に遭遇した様子。

解決方法

IntelliJのapp内にもconfig.fishがあってそっちを読んでるのが問題っぽい。 stackoverflow見るとfunctionsの読み込み処理追加しろよ〜っ...

Intellij が Terminal tab を開くときに読み込んでいる shell の設定ファイルは、/Applications/RubyMine.app/Contents/plugins/terminal の中にあるものが呼び出されているらしい。 実際に見に行ってみると、

> /Applications/IntelliJ\ IDEA.app/Contents/plugins/terminal

$ tree .
.
├── fish
│   ├── config.fish
│   └── fish_variables
├── jediterm-bash.in
└── lib
    ├── resources_en.jar
    └── terminal.jar

2 directories, 5 files

確かになんかありますね.... ( fish/config.fish もあれば fish_valiables も )

ということで今回、同じ会社の製品とあって原因も同じだろうと考え、 最初から存在していた fish/ ディレクトリは、 fish.back と言う名前に置き換えてあげて、自分のカスタマイズしてある設定ファイルが入っているディレクトリ (私の場合で言うと ~/.config/fish/config.fish )のシンボリックリンクを貼ってみました。

> ~/
$ cd /Applications/RubyMine.app/Contents/plugins/terminal

> /Applications/RubyMine.app/Contents/plugins/terminal
$ mv fish/ fish.back/

> /Applications/RubyMine.app/Contents/plugins/terminal
$ ln -s ~/.config/fish .

そして tree コマンドを実行すると以下のような結果が得られました。

> /Applications/RubyMine.app/Contents/plugins/terminal

$ tree .
.
├── fish -> /Users/cat2koban/.config/fish/
├── fish.back
│   ├── config.fish
│   └── fish_variables
├── jediterm-bash.in
└── lib
    ├── resources_en.jar
    └── terminal.jar

3 directories, 5 files

本筋の RubyMine の Terminal tab からも、無事に bundle exec rails ... コマンドが実行できました。 これからさらに RubyMine を使い倒せそうで何よりですね。