RubyMineやPhpStormをCLIから起動する時に使っているスクリプト

ka2n
ka2n
(Updated: )

普段開発する時は、Visual Studio Codeやvimも使いますが、PHPやRubyの時はPhpStormやRubyMineなどのJetBrains製IDEを使用しています。gitなファイル操作をCLIでやるのが好みなので、ターミナルでプロジェクトのディレクトリまで移動し、Visual Studio Codeであればcode .などタイプしてIDEを起動しています。

JetBrainsのIDEはJetBrains Toolbox経由でCLI用のコマンドをインストールすることができますがVisual Studio Codeのcodeコマンドと比べるといくらか挙動が好みではない所があります。

バックグラウンドで開いてくれない

macOSで使用していた頃はそのような事はなかったと思うので、Linux環境向けのコマンド特有の問題だと思います。
おもむろに、CLIコマンドを実行するとそのままIDEの起動ログなどが流れてきます。デタッチされない。

対処

以下のようなスクリプトを作成して使用しています。

追記(2022-09-15): アップデートした後に手間なので、最新版を起動するようにスクリプトを修正しました。

RubyMine用:

#!/bin/bash

basedir="$HOME/.local/share/JetBrains/Toolbox/apps/RubyMine/ch-0/"
latest=$(/usr/bin/ls -1 "$basedir" | sort -r | grep '^[0-9\.]*$' | head -n1)
"${basedir}/${latest}/bin/rubymine.sh" "$@" </dev/null &>/dev/null & disown

PhpStorm用:

#!/bin/bash

basedir="$HOME/.local/share/JetBrains/Toolbox/apps/PhpStorm/ch-0/"
latest=$(/usr/bin/ls -1 "$basedir" | sort -r | grep '^[0-9\.]*$' | head -n1)
"${basedir}/${latest}/bin/phpstorm.sh" "$@" </dev/null &>/dev/null & disown

解説

起動時に何をやっているのか、全然わからないので調べた事をメモしておきます。

  • "$@" : 受け取ったコマンドライン引数をそのまま渡す。
  • </dev/null : EOFを標準入力(stdin)に渡す。(ここはよくわからない)
  • &>/dev/null : 標準出力(stdin)と標準エラー出力(stderr)を /dev/null に投げて捨てる
  • & : バックグラウンドへ
  • disown : シェル(今入力しているやつ)からプロセスジョブを切り離す
ka2n

ka2n

Webエンジニアです