Launching screen only if the current terminal isn't already in a screen instance
If you like to use screen then this is a useful piece of code to add to the end of your .bashrc
file. It will
launch screen, but only if it isn’t currently in an instance of screen. The great thing about this is that it works
across machines so you can put it in your .bashrc
on all the machines you like and then when you ssh into the
first one you get a new screen session, but ssh into a second machine from within that screen session and the
second machine won’t launch another session of screen.
command_exists () {
type "$1" &> /dev/null ;
# If we are in a ssh tty and not already running screen and screen exists then think about starting it
if [ $SSH_TTY ] && [ ! $WINDOW ] && [ "$TERM" != "screen.linux" ] && command_exists screen; then
# If we don't have any attached screen sessions run screen and attach to the first dettached session
SCREENLIST=`screen -ls | grep 'Attached'`
if [ $? -eq "0" ]; then
echo -e "Screen is already running and attached:\n ${SCREENLIST}"
else
screen -U -R
fi
fi
Jason
— 2013-12-03