screen -R が仕様通り動かない

id:otn:20120512 で、

ログイン時に自動的に screen が起動されるように。

$ vi .bash_profile
 末尾に追加。
exec screen -R

と書いた。man screen に、

-R デタッチされている screen セッションのうち最初に見つかったものを再開しようと試みる。

と書いてあるが、実際にデタッチされいるセッションが複数あると、メッセージを出力して終了してしまう。


これでは駄目なので、書き換える。

$ screen -ls
There are screens on:
        31337.pts-5.XXXXXXXXXX  (Detached)
        20235.pts-0.XXXXXXXXXX  (Attached)
        31254.pts-3.XXXXXXXXXX  (Detached)
3 Sockets in /var/run/screen/S-t.

のようにセッションの状況が調べられるので、これを使って .bash_profile に下記のように書く。

for x in `screen -ls`
do case "$x" in
   *Detach*) exec screen -r "$y" ;;
   esac
   y="$x"
done
exec screen