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

非対話型シェルでは何も印刷しないでください。一般的なコードスニペットは次の.bashrcとおりです。

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

最初は、非対話型シェルのすべてのファイルをスキップします。

たとえば、次のように事前に確認する必要がありますecho

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

echoテキストを編集するとscp契約が壊れる可能性があるためです。

関連情報