【问题标题】:Solution for using iTerm2 'shell integration' and screen (over ssh)使用 iTerm2 'shell integration' 和 screen 的解决方案(通过 ssh)
【发布时间】:2016-11-12 18:49:16
【问题描述】:

因此,当我通过 ssh 连接到远程服务器时,我会使用“screen -R myscreen”来防止任何正在运行的脚本/进程在 ssh 连接断开时被中断,无论出于何种原因(wifi 信号不佳等)。

但是,在启动屏幕时,iTerm2 的 shell 集成不再起作用。

有什么解决方法吗?

【问题讨论】:

    标签: shell iterm2


    【解决方案1】:

    我找到的解决方案是:

    使用 'tmux' 而不是 'screen',通过执行 tmux -CC 打开一个 tmux 会话(并使用 tmux -CC attach 在断开连接后重新连接。) 这也被描述为here

    要使 iTerm2 shell 集成在 tmux 中工作,修改 ~/.iterm2_shell_integration.bash 并删除第一行的这部分: "$TERM" != screen

    所以这个

    if [[ "$TERM" != screen && "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" && "$-" == *i* ]]; then

    变成:

    if [[ "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" && "$-" == *i* ]]; then

    【讨论】:

    • TY!这解决了当我共享 bash 历史记录、tmux 和 iterm 时会收到此错误的问题:“-bash: iterm2_preexec_invoke_cmd: command not found”。我没有做太多测试,但现在看起来不错......
    • 但是tmux -CC(而不是tmux)发起的会话更像screen,而不是tmux我发现拆分面板很难做到......
    • 在 iTerm 3.2.9 中,条件为"$ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX""$TERM" != screen。所以你现在可以在.profile 中的source ~/.iterm2_shell_integration.bash 之前设置ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX=yes
    • screen 用户有什么新的解决方案吗?谢谢
    【解决方案2】:

    您可以使用触发器来复制 shell 集成的几乎所有功能。请参阅本文档底部附近的触发器部分:https://www.iterm2.com/documentation-shell-integration.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      相关资源
      最近更新 更多