How can I start GNU Screen automatically when I open a new terminal window?

I'm running Ubuntu 14.04 (Cinnamon Mint 17.1) with Bash. Every time I open a new terminal window, I enter screen to start the screen window manager, but I would like the shell to do this for me.

I believe I need to modify .bashrc instead of .profile, so it starts on every new terminal window, not just on logon. So I've added the following to the end of .bashrc, to replace the shell process:

exec /usr/bin/screen -q

When I start a new terminal window:

  • Usually, I get a blank window with a flashing cursor, and the Bash prompt only appears after I press Ctrl+C.
  • Sometimes, the terminal window closes immediately, when I press Ctrl+C, or when I resize the terminal window.
  • Sometimes, I get a Bash prompt with no $LS_COLORS (though it's hard to reproduce this, so I'm not entirely sure when or why it happens).

Can anyone explain why this is failing for me, and suggest a solution?

Thanks,

Huw


Solution 1:

When screen starts, the first window launches your shell, and you've told your shell to start screen. Then, when screen starts, the first window launches your shell, and you've told your shell to start screen. Then, when screen starts ...

Lather, rinse, repeat.

screen sets the $TERM variable to "screen", so to avoid endlessly recursive invocations of screen ("turtles all the way down") your .bashrc can end with:

[[ $TERM != "screen" ]] && exec screen -q