[comp.os.msdos.programmer] PolyShell and MKS

steveha@microsoft.UUCP (Steve Hastings) (07/11/90)

In article <9007091948.AA15079@edison.CHO.GE.COM> rja <rja@edison.cho.ge.com> writes:
>It is unreasonable to claim that PolyShell is
>"better" than the MKS Toolkit (which includes
>the MKS Korn Shell).
>
>Both are fine products but a direct comparison along the
>lines of "is rumoured to be better than" is uncalled for
>since they really are targeting different customers 
>(BSD people and SVID/POSIX people) and have different 
>goals, capabilities, and limitations.  

I completely agree here.  I am a rabid PolyShell fan, but I know there are
people for whom MKS is a better fit.

PolyShell is much better for me than MKS Utilities because it has a
different emphasis.  It is an attempt to blend the best of DOS and UNIX
together.  Some of the features of MKS designed to make it more UNIX-style
bother me when I try to use it.

There are several specific differences that may seem small, but make my
decision quite final.  First is that the MKS utilities goes out of its way
to make sure that you can never have a default directory on a drive.  For
example:

$ cd c:/usr/bin
$ cd d:/
$ ls c:

the ls will list the root of c:, not the last directory you were in.  This
is completely different from DOS, and arguably closer to UNIX.  I prefer
the PolyShell version, where "c:/" refers to the root and "c:" refers to the
current default directory on drive c:.  I especially prefer it when I am
connected to six network drives at once and have a 20-character-long default
directory path on each of them.  I considered writing a whole set of
aliases using environment variables to hack MKS to do what I want, but that
would not work from within applications.  And with PolyShell available, I
don't need it.

The other big difference is the way the two shells allow you to type
UNIX-style directory delimiters ("/" instead of the DOS "\") and
command-line switches ("-" instead of the DOS "/").  MKS takes the easy
way, by setting the internal DOS characters to their UNIX values.  This not
only fixes command-line commands, it also works inside applications that
allow you to type a path.  But it breaks several applications I have used
that make use of overlays -- the applications try to use "\" as a directory
delimiter and DOS chokes, since now it wants "/" instead.  PolyShell takes
advantage of the fact that it is a shell -- it has a "fixbs" command that
fixes a command line from "/" characters to "\" characters before DOS sees
it.  The result is that you can type "/" and "-" on the command line
(only -- applications still want "\") and no applications are broken.
This is better for me, since most of my applications manage paths without
me typing them.  This is also better for me because PolyShell allows you to
mix the characters up -- you can run a PolyShell command with "-" and "/"
and then immediately run a DOS command with "/" and "\".  (In fact, you can
run a PolyShell command like this: ls -l /usr\bin\this/that and it will
work!)

PolyShell may not be as POSIX compatible as MKS, but it is compatible
enough that I once unpacked a shar archive with it.  It meets my needs
exactly.  As everyone on the net says, "Your mileage may vary."  But please
at least consider PolyShell if you are in the market for a UNIX-style
shell.
-- 
Steve "I don't speak for Microsoft" Hastings    ===^=== :::::
uunet!microsoft!steveha  steveha@microsoft.uucp    ` \\==|