To begin with goldie is right, but as shells are the same for openSUSE and SLES, maybe we can help you.
But I think I am missing some points.
First there is no such thing as a one line script. There should at least be two lines
`id -gn` = "trax" ] && exec /bin/bash
or any other shell/interpreter you think your script must be run by in the shebang on the first line.
You say a connection is made and a user logs in. Then, as in a miracle, you say they do not get a bash prompt, because of this script. But you never told tre script was even called. Please explain if the script is called, and when yes, where it resides and how it is called. In other words, we need all the information you omitted, maybe because you thought that we at openSUSE are clairvoyant like your SLES friends
When it is realy something do do with the difference between SLES 9 and SLES 10, that might be beyond our (openSUSE based) competence. You will most certain be better served at the Novell forums about SLES/SLED at NOVELL FORUMS as goldie already pointed out to you.
I did not say that the missing #! is the cause of the problem, but that you in any case need a proper one, else you can not call it a shell script. This with the motto: We do things correct, or we do not do them at all.
When you want that we carry on trying helping you you realy must be more talkative.
When you do not use the exec, what is the shell you normaly get? In other words, which shell is interpreting your profile.d?
When you want particular users getting bash on login (instead of some other shell), why do you not configure that in their /etc/passwd entry?
I did not go and spend a lot of time reading the bash man page, but when bash is started from exec, I am not sure that it starts as a login-shell. When it is not login shell a lot of environment variables (including the prompt string) mat not be set.