加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash脚本与tmux启动一个4窗口窗口

发布时间:2020-12-15 16:18:52 所属栏目:安全 来源:网络整理
导读:任何人都可以帮助解释tmux,bash和exec是怎么回事?我试图用4窗格窗口设置一个tmux会话。理想情况下,我想在3个窗格中运行命令:一个Ruby Thin服务器和几个Ruby守护进程。这是我到目前为止: ?/ .bin / tmux-foo: #!/bin/shtmux new-session -d -s foo 'exe
任何人都可以帮助解释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,它停止瘦服务器并返回到shell。然而,命令不在历史中;即如果我击中向上键我没有得到包执行瘦命令…我从我的bash历史中得到一些其他命令。我想知道是否有任何方式来安排这些脚本,以便我得到的命令在bash历史。

也…我试过了许多组合的exec,exec $ SHELL -s …和exec $ SHELL -s … -I,我不知道发生了什么…

任何人都可以帮助解释什么是与tmux和bash和exec在这里的一般想法?

正如其他人提到的,在启动$ SHELL之前,您的命令由shell脚本运行;没有一般方式的$ SHELL的实例可以知道它的父运行之前启动它。

要将“初始命令”导入shell历史记录,需要将命令键击直接提供给$ SHELL本身的实例(当然,它已经启动)。在其他情况下,我可能建议使用一个小的Expect程序产生一个$ SHELL的实例,喂它的击键,然后使用交互将tty绑定到期望产生的$ SHELL。

但在tmux的上下文中,我们可以使用send-keys:

#!/bin/sh

tmux new-session -d -s foo 'exec pfoo'
tmux send-keys 'bundle exec thin start' 'C-m'
tmux rename-window 'Foo'
tmux select-window -t foo:0
tmux split-window -h 'exec pfoo'
tmux send-keys 'bundle exec compass watch' 'C-m'
tmux split-window -v -t 0 'exec pfoo'
tmux send-keys 'rake ts:start' 'C-m'
tmux split-window -v -t 1 'exec pfoo'
tmux -2 attach-session -t foo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读