NetBSD's ash as /bin/sh substitute on Linux

NetBSD's ash as /bin/sh substitute on Linux

Post by Arjan de V » Fri, 13 Aug 1993 08:12:22





>I was told the latest ash can be found sun-lamp.cs.berkeley.edu in the
>directory /pub/NetBSD-current/src/bin/sh.  I have picked up a copy and
>have managed to compile it.  It seems to handle the `configure' scripts that
>come with most GNU packages without problems; which is about the most I will
>ever need, since I am very unlikely to write a shell script myself that will
>really test the capability of a shell.  For example, ksh had trouble with
>the configure scripts of gzip and shellutils-1.8 (it produced spurious
>quotes in the makefile for gzip and completely hung during running the
>configure script of the shellutils package).  But ash had no problem at
>all.  The executable is about 64k, which is smaller than ksh.  Hope this
>helps.

>Sincerely,

>Sunando Sen

Sunando send me his sources and I must say this version of ash works quite
well under Linux after using Sunando's new Makefile (the original Makefile
was absolutely unusable under Linux).

It runs indeed configure scripts very well except it cannot do `cd .' :-)

It has however some serious bug (I think): many shell scripts from INN and
smail use commands in backquotes (`date`). When running these scripts from
the command line, they work fine, but when run from crond they hang at the
first `...` command, consuming 100% CPU time. This is also the case for
/etc/rc scripts. I started using debugging traces but haven't been able
yet to find the problem.

When this bug has been fixed, ash will be a good (and small: 66K) /bin/sh
substitute for Linux.

I'm at home now but tomorrow I'll try the find out who the current
maintainers of NetBSD's ash are so I can report the bug.

Arjan

--


 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Sunando S » Fri, 13 Aug 1993 13:19:04




Quote:>Sunando send me his sources and I must say this version of ash works quite
>well under Linux after using Sunando's new Makefile (the original Makefile
>was absolutely unusable under Linux).

>It runs indeed configure scripts very well except it cannot do `cd .' :-)

Well, I said that I am very unlikely ever to write a script that will test
any shell's capabilities.  In any case, I wouldn't have thought of a dirty
trick like `cd .'.  Isn't it rather pointless to `change' to the current
directory?  but what does ash do?  Does it go to a different directory, or
does it produce an error message?

Quote:>It has however some serious bug (I think): many shell scripts from INN and
>smail use commands in backquotes (`date`). When running these scripts from
>the command line, they work fine, but when run from crond they hang at the
>first `...` command, consuming 100% CPU time. This is also the case for
>/etc/rc scripts. I started using debugging traces but haven't been able
>yet to find the problem.

This I find rather strange.  The init program runs a number of very
complicated rc scripts which definitely make use of backquotes.  Consider
the following:

#! /bin/sh
#
# rc.S          This file is executed by init(8) when the system is being
#               initialized.  It takes care of the system just prior to
#               making it available for single-user (or multi-user) mode.
#               This includes setting up the basic networking interfaces
#               (to allow for remote mounting), initializing device dri-
#               vers, and that sort of things.
#

#

#

  # Clear the mount table.
  rm -f /etc/mtab~              # remove any lockfile...
  rm -f /etc/mtab               # remove the mount table itself

  # Set up networking if this has been configured.
  if [ -s /etc/NETWORKING -a "`/bin/cat /etc/NETWORKING`" = "YES" ]
  then
        MYNAME=""

        # HACK: disable any old-style DNS lookups.
        if [ -f /etc/resolv.conf ]
        then
                /bin/mv /etc/resolv.conf /etc/_resolv.conf
        fi

        # Fetch our current host name, and set it up.
        /bin/hostname -Sf
        MYNAME="`/bin/hostname`"

        # Attach the loopback device.
        /etc/ifconfig lo $MYNAME up
        /etc/ifconfig lo localhost up

        # Attach the primary Ethernet channel as "we0".
        /etc/ifconfig wd0 $MYNAME net alone up

        # HACK: enable any old-style DNS lookups.
        if [ -f /etc/_resolv.conf ]
        then
                /bin/mv /etc/_resolv.conf /etc/resolv.conf
        fi
        unset MYNAME
  fi

  # All done.

Ash seems to work with the above script.  So, are you sure your problem is
not elsewhere?

Quote:

>When this bug has been fixed, ash will be a good (and small: 66K) /bin/sh
>substitute for Linux.

In fact, if you remove the job control feature (who needs that anyway?), the
executable will be even smaller: about 55k.

Sunando Sen

Quote:>I'm at home now but tomorrow I'll try the find out who the current
>maintainers of NetBSD's ash are so I can report the bug.

>Arjan


 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Arjan de V » Fri, 13 Aug 1993 17:11:56




>>It runs indeed configure scripts very well except it cannot do `cd .' :-)

>Well, I said that I am very unlikely ever to write a script that will test
>any shell's capabilities.  In any case, I wouldn't have thought of a dirty
>trick like `cd .'.  Isn't it rather pointless to `change' to the current
>directory?  but what does ash do?  Does it go to a different directory, or
>does it produce an error message?

It produces the error message `cannot cd to .'. I think it must be simple
to fix.

Quote:>>It has however some serious bug (I think): many shell scripts from INN and
>>smail use commands in backquotes (`date`). When running these scripts from
>>the command line, they work fine, but when run from crond they hang at the
>>first `...` command, consuming 100% CPU time. This is also the case for
>>/etc/rc scripts. I started using debugging traces but haven't been able
>>yet to find the problem.

>This I find rather strange.  The init program runs a number of very
>complicated rc scripts which definitely make use of backquotes.  Consider
>the following:

[script deleted]

Quote:>Ash seems to work with the above script.  So, are you sure your problem is
>not elsewhere?

I don't think so: bash 1.13cwru (alpha) runs these scripts without
problems both from the command line and from the cron daemon or /etc/init.
So I think it must be an ash problem...

Arjan

--


 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Nate Willia » Sat, 14 Aug 1993 07:43:13




Quote:>It runs indeed configure scripts very well except it cannot do `cd .' :-)

>It has however some serious bug (I think): many shell scripts from INN and
>smail use commands in backquotes (`date`). When running these scripts from
>the command line, they work fine, but when run from crond they hang at the
>first `...` command, consuming 100% CPU time. This is also the case for
>/etc/rc scripts. I started using debugging traces but haven't been able
>yet to find the problem.

>When this bug has been fixed, ash will be a good (and small: 66K) /bin/sh
>substitute for Linux.

Hmm, I don't see either of those bugs with the same shell (NetBSD and
FreeBSD same the same shell)

bsd % cat /etc/motd
FreeBSD 0.1.8 (COE)  08/04/93 14:21

bsd.coe.montana.edu

bsd % sh
$ pwd
/usr/user/nate
$ cd .
$ pwd
/usr/user/nate

$ cat ash-test

#!/bin/sh -x

echo "this is a test of /bin/sh (AKA ash)"
echo `date`
echo `pwd`
cd /tmp
echo `pwd`
cd .
echo `pwd`
echo Date-`date`

exit

And the output from running this under cron

From root  Thu Aug 12 15:38:03 1993


From: root (Cron Daemon)
To: nate

Date: Thu Aug 12 16:39:00 1993
X-Cron-Cmd: </usr/user/nate/ash-test>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/usr/user/nate>
X-Cron-Env: <PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin>
X-Cron-Env: <USER=nate>
Status: OR

+ echo this is a test of /bin/sh (AKA ash)
this is a test of /bin/sh (AKA ash)
+ date
+ echo Thu Aug 12 15:38:01 PDT 1993
Thu Aug 12 15:38:01 PDT 1993
+ pwd
+ echo /usr/user/nate
/usr/user/nate
+ cd /tmp
+ pwd
+ echo /tmp
/tmp
+ cd .
+ pwd
+ echo /tmp
/tmp
+ date
+ echo Date-Thu Aug 12 15:38:02 PDT 1993
Date-Thu Aug 12 15:38:02 PDT 1993
+ exit

I suspect a bug somewhere in the Linux libraries, or at least different
behavior than under the free BSD clones.

Nate

--


work #: (406) 994-4836       |  Operating Systems for [34]86 machines.
home #: (406) 586-0579       |  (based on Net/2, name changes all the time :-)

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Oleg Kibir » Sat, 14 Aug 1993 04:49:56





   >I was told the latest ash can be found sun-lamp.cs.berkeley.edu in the
   >directory /pub/NetBSD-current/src/bin/sh.  I have picked up a copy and
   >have managed to compile it.  It seems to handle the `configure' scripts that
   >come with most GNU packages without problems; which is about the most I will
   >ever need, since I am very unlikely to write a shell script myself that will
   >really test the capability of a shell.  For example, ksh had trouble with
   >the configure scripts of gzip and shellutils-1.8 (it produced spurious
   >quotes in the makefile for gzip and completely hung during running the
   >configure script of the shellutils package).  But ash had no problem at
   >all.  The executable is about 64k, which is smaller than ksh.  Hope this
   >helps.
   >
   >Sincerely,
   >
   >Sunando Sen

   Sunando send me his sources and I must say this version of ash works quite
   well under Linux after using Sunando's new Makefile (the original Makefile
   was absolutely unusable under Linux).

   It runs indeed configure scripts very well except it cannot do `cd .' :-)

   It has however some serious bug (I think): many shell scripts from INN and
   smail use commands in backquotes (`date`). When running these scripts from
   the command line, they work fine, but when run from crond they hang at the
   first `...` command, consuming 100% CPU time. This is also the case for
   /etc/rc scripts. I started using debugging traces but haven't been able
   yet to find the problem.

Apparently this happens only under Linux:

$ cat > t
#!/bin/sh
pwd
cd .
pwd
set `date`
echo $1
$ chmod 755 t
$ t
/usr/home/oleg
/usr/home/oleg
Thu
$

   When this bug has been fixed, ash will be a good (and small: 66K) /bin/sh
   substitute for Linux.

   I'm at home now but tomorrow I'll try the find out who the current
   maintainers of NetBSD's ash are so I can report the bug.

--

                                                        Oleg

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Arjan de V » Sat, 14 Aug 1993 17:51:35


[note: comp.os.linux -> comp.os.linux.misc]




>writes:
>   It has however some serious bug (I think): many shell scripts from INN and
>   smail use commands in backquotes (`date`). When running these scripts from
>   the command line, they work fine, but when run from crond they hang at the
>   first `...` command, consuming 100% CPU time. This is also the case for
>   /etc/rc scripts. I started using debugging traces but haven't been able
>   yet to find the problem.

>Apparently this happens only under Linux:

[script deleted]

I'm at the university know so I cannot test it but I said that commands in
backquotes only gave troubles when running from crond or init, not from
the command line. Somebody suggested it had something to do with
controlling tty's.

Arjan

--
Arjan de Vet -*-*-*-*-*-*-*-*-*-*-*-*-*-*- Eindhoven University of Technology

X.400    : c=nl;admd=400net;prmd=surf;o=tue;ou=win;s=devet -*-*-*-*-*-*-*-*-*

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Arjan de V » Tue, 17 Aug 1993 04:47:18





>writes:
>>Sunando send me his sources and I must say this version of ash works quite
>>well under Linux after using Sunando's new Makefile (the original Makefile
>>was absolutely unusable under Linux).

>You need Berkeley's "pmake" to use the supplied makefile.  I ported pmake
>to System V a while back, so it wasn't a problem for me...

I see it has just been ported to Linux :-)

Quote:>>It runs indeed configure scripts very well except it cannot do `cd .' :-)

>Interesting.  I hadn't tried that...:-)

Not the first test you think of indeed :-) Seems to be a Linux-only bug.

Quote:>>It has however some serious bug (I think): many shell scripts from INN and
>>smail use commands in backquotes (`date`). When running these scripts from
>>the command line, they work fine, but when run from crond they hang at the
>>first `...` command, consuming 100% CPU time. This is also the case for
>>/etc/rc scripts. I started using debugging traces but haven't been able
>>yet to find the problem.

>I found *something* that behaved like this very quickly: I sic'ed C-news
>on ash.  :-)  C-news has this wonderful ability to expose the bugs in
>any Bourne-style shell you care to name.   :-)

From experiences with bash 1.12 I know that also Configure scripts (e.g.,
the one from trn) and INN's shell scripts are also *extremely* good in
exercising Bourne-compatible shells.

Quote:>>When this bug has been fixed, ash will be a good (and small: 66K) /bin/sh
>>substitute for Linux.

>Indeed.  I wonder if it's the only bug, though.  Probably not...

>Does *anyone* know where there's a comprehensive test suite for Bourne-
>compatible shells?

Cnews/Configure/INN. But a real test would be very nice.

Arjan

--


 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Alan C » Wed, 18 Aug 1993 17:47:05



>I think the problem is Linux's weird behaviour when SIGCHLD is set to
>SIG_IGN, child processes can mysteriously disappear in this case.  You
>should make crond set SIGCHLD to SIG_DFL (which also means ignore the
>signal) instead of SIG_IGN.

This isn't weird its correct POSIX/SYS5 behaviour. The ability to ignore
child signals is an invaluable tool and saves messy code picking up dead
children you don't care about.

Alan

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Linus Torval » Tue, 17 Aug 1993 20:13:41



Quote:

>>>It runs indeed configure scripts very well except it cannot do `cd .' :-)

>>Interesting.  I hadn't tried that...:-)

>Not the first test you think of indeed :-) Seems to be a Linux-only bug.

One thing to check for in cases like this is what arguments the shell
actually uses for the "chdir()" call: it might be using the empty string
(or even the NULL pointer), both of which probably work under BSD to
give the "current directory", but it doesn't work that way under linux
(and is not supposed to).  "ftpd" has a similar problem when using
"mget/mput" for the current directory.  One good way to check this out
is to use "strace" on ash.

There may be other use of "BSD features" that break under POSIX (and
thus linux), which may explain why the problem cannot be seen on the
NetBSD platforms.

                Linus

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Philip Hombu » Thu, 19 Aug 1993 03:05:17



%>
%>>>It runs indeed configure scripts very well except it cannot do `cd .' :-)
%>>
%>>Interesting.  I hadn't tried that...:-)
%>
%>Not the first test you think of indeed :-) Seems to be a Linux-only bug.
%
%One thing to check for in cases like this is what arguments the shell
%actually uses for the "chdir()" call: it might be using the empty string
%(or even the NULL pointer), both of which probably work under BSD to
%give the "current directory", but it doesn't work that way under linux
%(and is not supposed to).  "ftpd" has a similar problem when using
%"mget/mput" for the current directory.  One good way to check this out
%is to use "strace" on ash.
%
%There may be other use of "BSD features" that break under POSIX (and
%thus linux), which may explain why the problem cannot be seen on the
%NetBSD platforms.

Most likely, Linus is right. I had the same bug under Minix. The fix was:

diff /net/bsdsrc/net2/bin/sh//cd.c ./cd.c
217c217,219
<       if (chdir(p) < 0) {
---

Quote:>       /* The empty string is not a legal argument to chdir on a POSIX 1003.1
>        * system. */
>       if (p[0] != '\0' && chdir(p) < 0) {

Maybe we should create a news group comp.unix.development.portable to create,
port and maintain utilites that run on multiple various (unix-like) operating
systems. (As an example, I recently ported the BSD make to Minix. I probably
has to fix the same things as in the port of pmake that was announce recently).

                                        Philip Homburg

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Jeff Jennin » Thu, 19 Aug 1993 02:28:36



: >
: >>>It runs indeed configure scripts very well except it cannot do `cd .' :-)
: >>
: >>Interesting.  I hadn't tried that...:-)
: >
: >Not the first test you think of indeed :-) Seems to be a Linux-only bug.

: One thing to check for in cases like this is what arguments the shell
: actually uses for the "chdir()" call: it might be using the empty string
: (or even the NULL pointer), both of which probably work under BSD to
: give the "current directory", but it doesn't work that way under linux
: (and is not supposed to).  "ftpd" has a similar problem when using
: "mget/mput" for the current directory.  One good way to check this out
: is to use "strace" on ash.

: There may be other use of "BSD features" that break under POSIX (and
: thus linux), which may explain why the problem cannot be seen on the
: NetBSD platforms.

:               Linus

Linus is correct, ash is passing "" to chdir().  Here are diffs I used
to make it work, it's not pretty but it does the job.

diff -c sh.old/cd.c sh/cd.c
*** sh.old/cd.c Tue Aug 17 11:18:22 1993
--- sh/cd.c     Tue Aug 17 11:24:43 1993
***************
*** 163,168 ****
--- 163,172 ----
                STPUTC('/', p);
                cdcomppath++;
        }
+       if (*dest == '.' && dest[1] == '\0') {
+               STPUTC('.',p);
+               cdcomppath++;
+       }
        first = 1;
        while ((q = getcomponent()) != NULL) {
                if (q[0] == '\0' || q[0] == '.' && q[1] == '\0')

--
Jeff Jennings              | Imagination is more important than knowledge.

Storage Tek - Iceberg      | The first rule of intelligent tinkering is to
LSVL 4 (303)673-7855       |   save all the pieces.  - Aldo Leopold

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Harald.Eik.. » Thu, 19 Aug 1993 08:35:57


One serious complaint I have about the NetBSD shell is that they threw out
the builtin "test" and "expr" that Almquist had put in.  Anyone know why
they did so?  It also had a builtin "catf", as quoted from the man page:

   HISTORICAL NOTE
       Early versions of UNIX had a program which was very similar
       to catf.  It was named cat.

Maybe they disliked his sense of humour so badly that they dropped the
other builtins too.....

Also, I miss a "type" command.

  ~~h

 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Arjan de V » Thu, 19 Aug 1993 06:42:44




>(Linus Torvalds) writes:

[my problem description deleted]

Quote:>%One thing to check for in cases like this is what arguments the shell
>%actually uses for the "chdir()" call: it might be using the empty string
>%(or even the NULL pointer), both of which probably work under BSD to
>%give the "current directory", but it doesn't work that way under linux
>%(and is not supposed to).  "ftpd" has a similar problem when using
>%"mget/mput" for the current directory.  One good way to check this out
>%is to use "strace" on ash.
>%
>%There may be other use of "BSD features" that break under POSIX (and
>%thus linux), which may explain why the problem cannot be seen on the
>%NetBSD platforms.

>Most likely, Linus is right. I had the same bug under Minix. The fix was:

[fix omitted]

The fix indeed solves the `cd .' problem. Thanks! Btw, my copy of cd.c had
two occurences of chdir().

But the other bug (scripts with `command`s invoked from init/crond) still
exists. Try the following script from your crontab:

#!/bin/ash -x
echo `date` >> crontest.out

When run from the command line it works as it should, see the following
trace:

-----------------------------------------------------------------------------
Tracing started.
Shell args:  "ash" "-x" "crontest"
cmdloop(1) called
token newline
token word echo
reread token word echo
reread token word echo
reread token word echo
token word date
reread token word date
reread token word date
reread token word date
token end of file
reread token end of file
reread token end of file
reread token end of file
token word ?
token redirection
token word crontest.out
token newline
reread token newline
reread token newline
reread token newline
reread token newline
evaltree(0xf9e8: 1) called
evalcommand(0xf9e8, 0) called
evalcommand(0xf990, 4) called
searchexec "date" returns "/bin/date"
makejob(0xf990, 1) returns %1
forkshell(%0, 0xf990, 2) called
In parent shell:  child = 2951
evalbackcmd done: fd=4 buf=0x0 nleft=0 jp=0x14f00
Child shell 2951
normal command:  "date"
expbackq: read returns 33
expbackq: read returns 0
waitforjob(%1) called
dowait(1) called
wait returns 2951, status=0
Changin status of proc 2951 from 0xffffffff to 0x0
Job 1: changing state from 0 to 2
Not printing status: status=0
evalbackq: size=32: "Tue Aug 17 00:02:13 MET DST 1993"
builtin command:  "echo" "Tue" "Aug" "17" "00:02:13" "MET" "DST" "1993"
token end of file
exitshell(0) pid=2950
-----------------------------------------------------------------------------

but when run from crond ash hangs:

-----------------------------------------------------------------------------
Tracing started.
Shell args:  "ash" "-x" "/home/devet/crontest"
cmdloop(1) called
token newline
token word echo
reread token word echo
reread token word echo
reread token word echo
token word date
reread token word date
reread token word date
reread token word date
token end of file
reread token end of file
reread token end of file
reread token end of file
token word ?
token redirection
token word crontest.out
token newline
reread token newline
reread token newline
reread token newline
reread token newline
evaltree(0xf9e8: 1) called
evalcommand(0xf9e8, 0) called
evalcommand(0xf990, 4) called
searchexec "date" returns "/bin/date"
makejob(0xf990, 1) returns %1
forkshell(%0, 0xf990, 2) called
In parent shell:  child = 2967
evalbackcmd done: fd=4 buf=0x0 nleft=0 jp=0x14f00
Child shell 2967
normal command:  "date"
expbackq: read returns 33
expbackq: read returns 0
waitforjob(%1) called
dowait(1) called
wait returns -1, status=0
dowait(1) called
wait returns -1, status=0
dowait(1) called
wait returns -1, status=0
dowait(1) called
wait returns -1, status=0
[etc]
-----------------------------------------------------------------------------

Branko Lankester suggested fixing crond but that didn't work for me.

When this bug (??) has been fixed I think I can replace bash
1.13cwru-alpha with this NetBSD ash without breaking anything (especially
INN).

Arjan

--


 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Chet Ram » Thu, 19 Aug 1993 23:23:11




>One serious complaint I have about the NetBSD shell is that they threw out
>the builtin "test" and "expr" that Almquist had put in.  Anyone know why
>they did so?

Because Berkeley did.  The shell is shipped that way in net-2 and 4.4.
The only `optional' builtin from ash that has been retained is echo.
CSRG added a `printf' builtin for 4.4.

Chet
--
        ``Times are hard, and you're afraid to pay the fee.
          So you find yourself somebody who can do the job for free.''


 
 
 

NetBSD's ash as /bin/sh substitute on Linux

Post by Harald.Eik.. » Fri, 20 Aug 1993 09:32:29


! >One serious complaint I have about the NetBSD shell is that they threw out
! >the builtin "test" and "expr" that Almquist had put in.  Anyone know why
! >they did so?
!
! Because Berkeley did.

Yes, but WHY?  A modern Bournish shell language which depends on an
external program to evaluate common if-statements?  It's so silly.....

   ~~h

 
 
 

1. New port of NetBSD's ash for Linux available

[Sorry for the delay in getting posts out to c.o.l.a. I have been busy moving
back to NY, and don't have phone service at home yet (!). Thanks for your
patience. --mdw]

I will upload a new port (version 0.1) of NetBSD's ash for Linux to:

        ftp.win.tue.nl:/pub/linux/ports/ash-linux-0.1.tar.gz

See the HISTORY file below for the changes.

Arjan

LSM entry:

Begin
35:PkgName    =ash-linux
35:Title      =NetBSD's ash shell (Bourne compatible) for Linux
25:Version    =0.1
65:Desc1      =NetBSD's ash shell is an almost Bourne shell compatible
65:Desc2      =shell which is small and has fewer bugs than bash 1.12 (at
65:Desc3      =least for running INN 1.4)
65:Author     =Kenneth Almquist

65:MaintAt1   =ftp.win.tue.nl
65:PathFile1  =/pub/linux/ports/ash-linux-0.1.tar.gz
65:MaintAt2   =
65:PathFile2  =
65:Required1  =libc 4.4.1 for running the binary
65:Required2  =
65:Required3  =
65:CopyPolicy =BSD Copyright
65:Keywords   =ash sh Bourne shell
15:ApproxSize =139247
65:Last3Rel   =
65:Comment1   =I did this port to get a decent /bin/sh for INN 1.4. bash
65:Comment2   =1.12 does not work very well with INN 1.4. 0.1 is the
65:Comment3   =version of the Linux port

 8:Date       =21AUG93
End

HISTORY:

History of NetBSD's ash for Linux
---------------------------------


- added builtin test command and -u flag for detecting unset variables
  (patches from Branko Lankester).

- fixed `permission denied' errors when running as root and trying to execute
  executables not owned by root (Branko).

- more fixes, additions and cleanups by Branko.


- original sources fetched August 10

- patches for Makefile and some other files by Sunando Sen

- chdir() fixes in cd.c and an initial signal(SIGCHLD,SIG_DFL) in main.c




--

2. remove unused var from serio struct

3. #!/bin/sh #!/usr/bin/sh can I do both for 2 diff machines

4. Ok Dammit! X Email Reader?

5. more secure?: "#!/bin/sh -" or "#!/bin/sh"

6. make command

7. root's shell, /sbin/sh, /bin/sh and /usr/ksh

8. I can't find the update for Award Modular Bios v4.51PGM

9. /bin/sh -> /usr/local/bin/bash won't boot

10. /bin/test vs. /bin/sh's internal test

11. /usr/bin, /usr/local/bin, /sbin or /opt/bin, /var/opt/bin - I'm confused.

12. XFree86 can run any apps...'/bin/sh:can't map .....'

13. is 'if' possible in /bin/sh when option -e is set ?