前言:我正在为 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 binding uwing使用i3.exec()
。
结果应该做以下事情:
- 启动终端(
xterm
最好) - 转到加载了 rvm 函数的给定目录(或 rvm 的cd 包装函数的解决方法)
- 启动命令(
irb
适合测试) - 启动
$SHELL
以防止终端在退出后关闭irb