Você pode executar xrandr
e ver como a saída muda dependendo se o monitor está conectado ou não.
No meu laptop, o monitor interno é chamado de "LVDS1" e externo é conectado em "DVI-0", então eu acho que você pode dizer se ele diz "DVI-0 conectado" ou "DVI-0 desconectado" .
Este script funciona para mim:
#!/bin/bash
xrandr | sed -n -e '/^[^ ]* connected/{s/^\([^ ]*\).*//;p;q}'
Assume-se que a primeira tela que diz conectada é o que você deseja.