tmux 检查是否干扰 scp 使用

tmux 检查是否干扰 scp 使用

我的服务器上的 .bashrc 文件相对简单,但它有这个块以确保它在登录时自动连接到 tmux:

echo Checking for tmux
if [ -z ${TMUX} ]
then
      /usr/bin/tmux attach || /usr/bin/tmux
fi

这通常工作正常,但当我尝试 scp 到该服务器时,它不起作用。当我 scp 后跟“没有会话;不是终端”时,我在本地终端上看到“正在检查 tmux”消息。为了解决这个问题,我尝试将上面的测试更改为

if [ -z ${TMUX} ] && [ -t 0 ]

这消除了“没有会话;不是终端”错误,但文件只是默默地不复制。如果我完全注释掉上面的内容,副本就可以正常工作,所以显然问题出在于此,但我不确定如果它未能通过上述测试,为什么它会影响任何事情。怎么了?

答案1

您不应该在非交互式 shell 中打印任何内容。典型的代码片段.bashrc是:

[[ $- != *i* ]] && return

在开始时,它会跳过非交互式 shell 的所有文件。

您应该在 前面使用此检查echo,例如:

[ -t 0 ] && return
echo Checking for tmux

因为echo编辑文本会破坏scp协议。

相关内容