序文: 私は i3 ベースのtmuxinatorクローンを作成しており、zsh
ユーザーです。
.rvmrc ファイルが存在する特定のディレクトリで xterm ウィンドウ (またはその他のターミナル) を開き、(ruby 関連の) コマンドを起動したいと考えています。
シナリオの例を次に示します。
➜ /tmp irb
2.0.0p0 :001 >
➜ /tmp cat r/.rvmrc
rvm --create use 1.9.3@cloudflo-cfu
➜ /tmp cd r
Using /home/user/.rvm/gems/ruby-1.9.3-p392 with gemset cloudflo-cfu
➜ r irb
1.9.3p392 :001 >
ご覧のとおり、私は2.0.0
システム ルビーとして1.9.3
、r/
ディレクトリ内で使用しています。他の場所から、そのディレクトリで xterm ウィンドウを起動して実行irb
し、その後端末を維持したい。
私ができるコンソールから:
➜ /tmp (cd /tmp/r && xterm -e "irb ; $SHELL ")&
これは機能しますが、rvm のロードは現在のターミナルから行われ、このトリックはスクリプトからは実行できません。
➜ /tmp cat test/start1.sh
(cd /tmp/r && xterm -e "irb ; $SHELL ")&
➜ /tmp ./test/start1.sh
2.0.0
これにより、バージョンで irb が開きます。
それで、どうすればこれを達成できますか?
より詳細には、私がしようとしているのは、i3-msg ユーティリティ ( i3-pyバインディング uwingを介して使用している) の正しいコマンド メッセージを見つけることi3.exec()
です。
結果は次のことを行う必要があります。
- ターミナルを起動します(
xterm
できれば) - rvm 関数がロードされている特定のディレクトリに移動します (または rvm のcd ラッパー関数の回避策)
- コマンドを起動します(
irb
テストには問題ありません) $SHELL
終了後にターミナルが閉じられないように起動しますirb