我开始问这个问题,但在我打开它时回答了它。我将发布这个问题,跟进我的解决方案,并将其留给其他潜在的解决方案。
<
背景故事>
我是 tmux 和 vim 用户。我喜欢远程 vim 工作,因为我不必担心 Ubuntu 开发机器在 Flash 电影给我内核恐慌时卡住。运行 tmux 意味着在我重新启动后打开的文件正在等待我,我可以从我离开的地方继续。当我像这样连接时,在 tmux 会话中运行 vim 时遇到了问题:
ssh example.com -t 'tmux attach'
Run Code Online (Sandbox Code Playgroud)
UTF-8 问题突然出现,在正常脱壳时不会出现,只是手动附加到 tmux 会话。
<
/背景故事>
所以我想要一种在 ssh 登录时启动一些东西的可重用方法,这不会影响我在我的.zshrc
(或者你的,.bashrc
如果你仍然使用 bash)中配置的任何其他东西,这些东西可能是我的开发环境所需要的,这不会当我偶尔在这台机器上本地工作时出现。
我希望 tmux 在 ssh 登录时启动。
典型的建议是将其添加到~/.bashrc
:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi
Run Code Online (Sandbox Code Playgroud)
但是当我登录时,我从 tmux 收到此错误:
服务器丢失
......然后我像往常一样陷入困境。
更新
当我添加睡眠时:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi
Run Code Online (Sandbox Code Playgroud)
...然后就可以了。奇怪的!是什么原因?