【发布时间】:2011-07-23 18:25:26
【问题描述】:
谁能帮忙解释一下tmux、bash 和exec 的情况?我正在尝试使用 4 窗格窗口设置 tmux 会话。理想情况下,我想在 3 个窗格中运行命令:例如一个 Ruby Thin 服务器和几个 Ruby 守护进程。这是我目前所拥有的:
~/.bin/tmux-foo:
#!/bin/sh
tmux new-session -d -s foo 'exec pfoo "bundle exec thin start"'
tmux rename-window 'Foo'
tmux select-window -t foo:0
tmux split-window -h 'exec pfoo "bundle exec compass watch"'
tmux split-window -v -t 0 'exec pfoo "rake ts:start"'
tmux split-window -v -t 1 'exec pfoo'
tmux -2 attach-session -t foo
~/.bin/pfoo:
#!/bin/bash
cd ~/projects/foo
rvm use ree
# here I want to execute command1 2 3 or 4...
exec $SHELL
一切正常...但是当我在运行瘦服务器的第一个窗格中ctlr-c 时,它会停止瘦服务器并返回到外壳。但是,该命令不在历史记录中;即,如果我按下向上键,我没有得到 bundle exec thin start 命令...我从我的 bash 历史记录中得到了一些其他命令。我想知道是否有任何方法可以安排这些脚本,以便我获得 bash 历史记录中的命令。
另外...我尝试了exec、exec $SHELL -s ... 和exec $SHELL -s ... -I 的多种组合,但我不太确定发生了什么...
谁能在这里帮忙解释一下tmux、bash和exec发生了什么?
【问题讨论】:
-
为了记录,我现在使用github.com/jimeh/tmuxifier(而不是 tmuxinator,它具有非 shell 依赖项)。