ksh bugs
Andrew Proudfoot
foot at tc.fluke.COM
Fri Aug 18 01:27:51 AEST 1989
The three problems I reported recently are all resolved. My thanks to
everyone who replied. Here's the deal:
>
>1. When no result variable is explicitly provided, the "read"
> command is supposed to store the line it reads in the REPLY
> variable. But a "read" call without an explicit result variable
> dumps core on our Suns (works OK on a Vax).
Dave Korn says this is fixed in the "point" release, which should be
available from the Toolchest soon if it isn't already. My understanding
is that these minor releases are relatively cheap if you've already bought
the most recent major release, but I haven't confirmed this.
>2. the "read" command does filename expansion on its input! ...
This was not a bug, just misinterpretation of normal behavior. Sorry!
>3. One large ksh script, when run by certain users on certain input,
> reports that it can't create new files in a writable directory,
> can't find commands that are in the search path, and can't even find
> commands for which correct full pathnames (like /bin/cp) are
> specified...
I've narrowed this problem down since the initial posting. It only occurs
when PWD is not set in the environment of the user running the ksh script.
Csh users here don't generally have PWD set, so they're the ones that get
burned. A simple test script shows the problem:
(running csh)
% cat toy.ksh Contents of script
#!/usr/local/ksh -x
tdir=tdir$$
mkdir $tdir
cd $tdir
cd ..
echo hello > $tdir/xx
rm -rf $tdir
% setenv PWD `pwd` Show PWD is set
% echo $PWD
/pandora/usr2/rhody/792A/bom/xxx
% toy.ksh Script runs OK
+ tdir=tdir5238
+ mkdir tdir5238
+ cd tdir5238
+ cd ..
+ echo hello
+ 1> tdir5238/xx
+ rm -rf tdir5238
% unsetenv PWD Unset PWD
% echo $PWD
PWD: Undefined variable.
% toy.ksh Script breaks
+ tdir=tdir5255
+ mkdir tdir5255
+ cd tdir5255
+ cd ..
+ echo hello
+ toy.ksh[7]: tdir5255/xx: cannot create
+ rm -rf tdir5255
toy.ksh[8]: rm: not found
A workaround is to start your scripts with something like:
if [ -z "$PWD" ]; then PWD=`/bin/pwd`; export PWD; fi
Korn says the point release includes repairs to the PWD initialization code
that he made to cure other symptoms, and that he *believes* this will fix
my bug as well.
Andy Proudfoot || domain: foot at tc.fluke.COM
John Fluke Mfg. Co., M/S 223B || uucp: {uw-beaver,microsof,sun}!fluke!foot
PO Box C9090 ||
Everett, WA 98206 || phone: (206) 356-5446
More information about the Comp.bugs.sys5
mailing list