Ein anderer Ansatz wäre zu prüfen in welchen $TERM sich User befindet:
if [[ $TERM = linux ]]; then
command
fi
Oder wenn Du startx nur auf einem bestimmten tty starten möchtest:
if [[ $(tty) = /dev/tty1 ]]; then
command
fi
Ich weiß nicht genau wie es sich unter Xfce verhält, aber mit urxvt bekomme ich so keine Fehlermeldungen.
Alledings kannst Du mit `pgrep X` überprüfen ob X schon läuft. Da ich aber leider zu unkreativ bin, um mir zu denken wie man das richtig abfragt geb ich hier mal ein 'very dirty' Beispiel:
if [[ $(pgrep X | wc -l) != 0; then
command
fi