【问题标题】:TMUX: how to make new window stay when start shell-command quits?TMUX:启动shell命令退出时如何使新窗口保持不变?
【发布时间】:2021-07-28 22:20:39
【问题描述】:

在tmux命令模式下,以下创建新窗口并在里面打开vim:

:new-window vim

当你退出 vim 时,窗口也会关闭。有没有办法让它留下来?

【问题讨论】:

    标签: shell tmux


    【解决方案1】:

    tmux 有一个选项:remain-on-exit:

    tmux set remain-on-exit on
    

    【讨论】:

    • 这会使那个窗口死掉。你知道如何让它回到 shell 吗?
    • @Amjith: :new-window "/bin/sh -c 'vim; exec bash'"
    • Shell 是否设置为保持退出状态?
    【解决方案2】:

    我意识到这是一个早已死去的问题。但我最近是 tmux 的用户,我也有同样的问题。事实证明,您可能想要这样做:

    tmux new-session bash -l 
    

    这会给你一个 bash 窗口(登录 shell)。然后,运行您想要的任何命令。完成后,它们会返回到命令提示符,就像您期望的那样。我认为很多人都在寻找一种类似“屏幕”的交互式行为。这是一种简单的方法。

    【讨论】:

      【解决方案3】:

      我使用发送键,以便将命令“键入”到 shell 中。这是我的get.all 脚本,它会启动许多命令,其中一些我可能需要在它们完成后与之交互(而我不需要的那些,有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
      

      【讨论】:

        【解决方案4】:

        将@Jo So 的好评移至单独的答案。

        当第一个 ls -la 完成后,此命令将落入 shell: tmux new-window "/bin/sh -c 'ls -la; exec bash'"

        【讨论】:

          【解决方案5】:

          如果您打算在新窗口中正常退出进程(如正确退出),那么tmux new-window "vim ; exec bash" 大部分都可以。

          但是,如果您打算通过系统中断(例如 SIGINT)退出新进程。您必须使用trap

          tmux new-window "bash -c 'trap \"bash\" INT; tail -f foo'"

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-23
            • 1970-01-01
            • 2022-11-01
            • 2016-01-04
            • 1970-01-01
            • 1970-01-01
            • 2012-09-26
            • 1970-01-01
            相关资源
            最近更新 更多