When reading the desktop file prefdm uses the = operator, which is assignment, to determine if there is a match between the symbol DESKTOP and the known display managers. However, it should be == which is comparison. prefdm always selected gnome.
In a [ test like this ] a single = is a comparison. (man test) What do you have in /etc/sysconfig/desktop?
In /etc/sysconfig/desktop I have DESKTOP = KDE. I would accept your comment about = vs == except that it did not work before I changed it and it did work after I changed it. Is the definition of = dependent on the shell? Or, does the xinitrc execute before changing to my shell? I use tcsh.
No, it specifically uses bash, so tcsh shouldn't matter. We can't reproduce this...very strange.