Skip to content
C Shell Perl Other
Find file
Failed to load latest commit information.
contrib Remove old contrib and debris
doc Separate out bjs personal functions into an esrc example
examples Move example esrc to examples/
.gitignore Add .gitignore
AUTHORS -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
ERRATA Import 0.9alpha1
INSTALL More excision of readline
MANIFEST Import 0.9beta1 More cleanups of build around libedit
README Import 0.9beta1
TODO Add TODO from the original paper
access.c Import 0.9beta1
closure.c Import 0.9beta1
config.cache -- Initial checkin of es-0.9-beta1+job-control.tar.bz2. Rip out support for libreadline More cleanups of build around libedit
conv.c Import 0.9beta1
dict.c Import 0.9beta1
dump.c Import 0.9beta1
es.1 Import 0.9beta1
es.h More cleanups of build around libedit -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
esconfig.h More cleanups of build around libedit
esdebug Import 0.9beta1
eval.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
except.c Import 0.9beta1
fd.c Import 0.9beta1
gc.c Import 0.9beta1
gc.h Import 0.9beta1
glob.c Import 0.9beta1
glom.c Import 0.9beta1
heredoc.c Import 0.9beta1 Separate out bjs personal functions into an esrc example
input.c More cleanups of build around libedit
input.h Import 0.9beta1
install-sh Import 0.9beta1
list.c Import 0.9beta1
main.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
match.c Import 0.9beta1
mksignal Import 0.9beta1
open.c Import 0.9beta1
opt.c Import 0.9beta1
parse.y Import 0.9beta1
prim-ctl.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
prim-etc.c More cleanups of build around libedit
prim-io.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
prim-sys.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
prim.c Import 0.9beta1
prim.h Import 0.9beta1
print.c Handle the automatic promotion of short int to int in va_arg
print.h Import 0.9beta1
proc.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
sigmsgs.h Import 0.9beta1
signal.c Include unistd.h to get definition of setpgid
split.c Import 0.9beta1
status.c -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
stdenv.h -- Initial checkin of es-0.9-beta1+job-control.tar.bz2.
str.c Import 0.9beta1
syntax.c Import 0.9beta1
syntax.h Import 0.9beta1
term.c Import 0.9beta1
term.h Import 0.9beta1
token.c More cleanups of build around libedit
tree.c Import 0.9beta1 Import 0.9alpha1
util.c Import 0.9beta1
var.c More cleanups of build around libedit
var.h Import 0.9beta1
vec.c Import 0.9beta1
version.c Import 0.9beta1


This is the README file for es, version 0.9-beta1

I include the original README file below.  See the CHANGES file for 
a list of changes to the shell.  See the INSTALL file for instructions 
for installing es.  In all other ways, I believe that this file is up
to date.

Soren Dayton

Es is an extensible shell.  The language was derived from the Plan 9
shell, rc, and was influenced by functional programming languages,
such as Scheme, and the Tcl embeddable programming language.  This
implementation is derived from Byron Rakitzis's public domain
implementation of rc.

WARNING: This is an experimental release of es.  Some aspects of this
	 release are unstable.  If you aren't feeling adventurous, you
	 may want to use version 0.84.

The Makefile should just work; if it doesn't, please let us know.  The
first few lines include some comments about what might be problematic.
Please see config.h for any conditional flags you may have to set on
the command line to make es compile.  An ANSI C compiler is
practically required.

See the file CHANGES for recent changes to the shell.  For details on
how to use es, please see the man page, which is unfortunately a bit
out of date.  The file, which is used to build the initial
memory state of the es interpreter, can be read to better understand
how pieces of the shell interact.

For some background into our motivation for writing es, see our Winter
1993 Usenix paper, ``Es: a shell with higher-order functions,''
available by anonymous ftp as

The paper corresponds to a slightly older version of the shell;  see
the file ERRATA for changes which affect parts of the paper.

An old version of Paul's .esrc (es startup) file is provided as an
example as esrc.haahr; correctness is not guaranteed.  A simple
debugger for es scripts, esdebug, is also included; this is very
untested and should be considered little more than a sketch of a few

A simple history mechanism for this shell (conceptually derived from
the Research Eighth Edition Unix =(1) commands) is available in

Es supports the use of GNU readline (or compatible) libraries for
interactive command-line editing.  Readline may be obtained from any
of the many GNU project distribution sites, such as
Simi Turner wrote a much smaller readline clone called editline which
Rich Salz has been maintaining; a copy of it is available as

Please report any problems to us at

	Paul Haahr <>
	Byron Rakitzis <>

There is a mailing list for discussing es.  Send mail to

to join the list.  The list itself is

Es is in the public domain.  We hold no copyrights or patents on
the source code, and do not place any restrictions on its distribution.
We would appreciate it if any distributions do credit the authors.


-- Paul Haahr & Byron Rakitzis
Something went wrong with that request. Please try again.