pdksh should be fine, I have only noticed minor differences to "standard" ksh. The ones I can recall are:
pdksh supports brace expansion, Solaris ksh doesn't.
[tt]pdksh-5.2.14-22 $ echo blah{1,2,3}
blah1 blah2 blah3
pdksh-5.2.14-22 $
Solaris 8 ksh $ echo blah{1,2,3}
blah{1,2,3}
Solaris 8 ksh $[/tt]
In pdksh, variables
read in a pipeline are not inherited by the parent shell. This may be due to Linux' handling of pipelines rather than pdksh itself... bash behaves in the same way:
[tt]pdksh-5.2.14-22 $ echo "blah" | read n ; echo $n
pdksh-5.2.14-22 $
Solaris 8 ksh $ echo "blah" | read n ; echo $n
blah
Solaris 8 ksh $[/tt]
pdksh doesn't support process substitution, which I really miss!:
[tt]pdksh-5.2.14-22 $ diff <(echo one) <(echo two)
ksh: syntax error: `(' unexpected
pdksh-5.2.14-22 $
Solaris 8 ksh $ diff <(echo one) <(echo two)
1c1
< one
---
> two
Solaris 8 ksh $[/tt]
These differences could be because Sun have stuck with the ksh88 standard and pdksh uses ksh93... or something? I haven't checked. Visit
for the lowdown from the creator of ksh.
Annihilannic.