Bash   发布时间:2022-05-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Bash脚本与tmux启动一个4窗口窗口大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
任何人都可以帮助解释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历史。

也…@R_675_9890@许多组合的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

大佬总结

以上是大佬教程为你收集整理的Bash脚本与tmux启动一个4窗口窗口全部内容,希望文章能够帮你解决Bash脚本与tmux启动一个4窗口窗口所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: