flavours of shell - what is there?
Byron Rakitzis
byron at archone.tamu.edu
Fri Oct 5 04:59:49 AEST 1990
In article <43508 at sequent.UUCP> calvin at crg1.sequent.com (Calvin Goodrich) writes:
>In article <4278 at ecs.soton.ac.uk> tjc at ecs.soton.ac.uk (Tim Chown) writes:
>>
>>The ones I know of are simply:
>> sh csh bash ksh
>>
>>Are there others? Where are they principally available from?
>
>here's a little known shell ...
>
>nsh:
>
> NutSHell, the smallest UnixTM shell yet. Version 1.0 (the only
>one released so far) includes only 'cd' and 'echo <string constant>'.
>GNU-nsh, to be released later this year, is expected to be much more
>powerful, with built-in Bourne, Korn and C shell emulators. The executable
>is expected to go from 306 bytes to 7Mb with this release, however.
>
>(all this comes with a huge :]. i mean really this is one of the few groups
> i've seen that hasn't had any injected humor. ripped off without permission
> from rec.humor.)
>
>calvin.
At the risk of seeming like a braggart, please let me include the
source code to "bsh", the "bull-shell". It is even smaller than the
nsh, since it has only cd as a builtin. It performs io-redirection and
pipes, however. You may have seen this shell in the 1990 Obfuscated C
comptetition.
bsh.c (by Byron Rakitzis and Sean Dorward)
--------------------------------CUT HERE----------------------------
# to unbundle, sh this file
# bundled by byron on archone at Thu Oct 4 13:57:32 CDT 1990
# contents of bundle:
# bsh.c
echo bsh.c
sed 's/^-//' > foo.c <<'end of bsh.c'
-#define D ,close(
-
-char *c,q [512 ],m[ 256
-],*v[ 99], **u, *i[3 ];f[ 2],p; main (){for
- (m[m [60]= m[62 ]=32 ]=m[* m=124 [m]= 9]=6;
- e(-8) ,gets (1+( c=q) )|| exit (0); r(0,0)
- )for( ;*++ c;); }r(t, o){ *i=i [2]= 0;for
- (u=v +98 ;m[*--c] ^9;m [*c] &32 ?i[*c
- &2]= *u,u- v^98 &&++u:
-
- 3 )if(!m[*c]){for(*++c=0;!m[*--c];);
- * --u= ++c;}u-v^98?strcmp(*u,"cd")?*c?pipe(f),o=f[
- 1 ]:
- 4 ,(p=fork())?e(p),o?r(o,0)D o)D*f):
- 1 ,wait(0):(o?dup2(*f,0)D*f)D o):*i?
- 5 D 0),e(open(*i,0)):
- 9 ,t?dup2(t,1)D t):i[
- 2 ]?
- 6 D 1),e(creat(i[2],438)):
- 5 ,e(execvp(*u,u))):e(chdir(u[1])*2):
- 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||exit(1):
- 5 ;}
end of bsh.c
More information about the Comp.unix.shell
mailing list