TMUX: how to make new window stay when start shell-command quits?

我们两清 提交于 2019-12-05 07:05:48
molok

tmux has an option for this: remain-on-exit:

tmux set remain-on-exit on

I realise this is a long dead question. But I'm a recent user of tmux and I had this same question. It turns out that you might want to do this:

tmux new-session bash -l 

That gets you a bash window (login shell). Then, run whatever commands you want. When they're done, they return to a command prompt, like you expect. I think a lot of people are looking for an interactive 'screen'-like behaviour. This is an easy way to do that.

I use send-keys so that it "types" the command into the shell. Here's my get.all script, which fires up many commands, some of which I may need to interact with after they're done (and the ones I don't, have exit):

#!/bin/sh
tmux att -t get ||
tmux \
  new -s get -n emacs \; \
  send-keys 'get.emacs' C-m \; \
  neww -n git \; \
  send-keys 'get.git' C-m \; \
  neww -n mini \; \
  send-keys 'get.mini' C-m \; \
  neww -n port \; \
  send-keys 'get.port' C-m \; \
  neww -n rakudo \; \
  send-keys 'get.rakudo' C-m \; \
  neww -n neil \; \
  send-keys 'get.neil && get.neil2 && exit' C-m \; \
  neww -n red \; \
  send-keys 'get.red && exit' C-m \; \
  neww -n cpan \; \
  send-keys 'get.cpan && exit' C-m \; \
  selectw -t emacs

Moving good comment of @Jo So to a separate answer.

This command drops to shell once the first ls -la finishes: tmux new-window "/bin/sh -c 'ls -la; exec bash'"

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!