screenと.bashrcとscpと

.bashrcにログインしたらscreenを起動するように記述したせいで、scpでのファイルのコピーができなくなってはまったメモです。


ローカルだったり、sshで接続した先だったり、ログインするたびに

$ screen

を入力するのが面倒だったので.bashrcにログインしたらscreenを自動で起動するように書きました。

if [ "$TERM" != 'screen' ]; then
  screen -rx || screen -D -RR
fi

これでログインすると、既にscreenのセッションが存在していた場合はそれを開いて、存在しない場合は新たに作成する、という動作でscreen万歳な環境だったのですが。


この環境にscpでファイルをコピーしようとするとエラーが発生してコピーできないのです。


原因がscreenが自動的に起動するように.bashrcに記述したせいというのがわかったので、とりあえず

if [ "$TERM" = 'xterm' -o "$TERM" = 'linux' ]; then
  screen -rx || screen -D -RR
fi

とすることで回避できましたが…… もっと良い方法があるような気がしてなりません。


追記:
解決編。screenと.bashrcとscpと解決編 - 四角革命前夜