"
#!/usr/bin/env ksh" would probably do just as well. Let the system find it for you if it can.
As long as
ksh is guaranteed to be installed on all involved systems, the shell syntax probably won't need to change much, if at all. But if you can't ensure that, then you'd have to fall back to the much more limited posix shell. I'm assuming that that won't be necessary though.
As for making the commands used compatible, probably the best thing to do is write up some functions to decide between them.
Code:
current_os=$( uname )
find(){
case $current_os in
Linux) command /path/to/linux/find <syntax for linux> ;;
Solaris) command /path/to/solaris/find <syntax for solaris> ;;
*) echo "What kind of rinky-dink OS are we running here?" ; return 1 ;;
esac
}
You may have to get fancy in some cases, to get the input arguments to the places they need to be, or to emulate commands that don't exist on one or the other OS.
You could also set the function definitions in an external file and source that into all of your scripts (or AIUI ksh also has a function loading system you might be able to use?).