0

序文: 私は 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.3r/ディレクトリ内で使用しています。他の場所から、そのディレクトリで 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
4

1 に答える 1