Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Sep 2000 12:38:09 -0700
From:      "Duane H. Hesser" <dhh@androcles.com>
To:        hackers@FreeBSD.ORG
Subject:   Alpha testers wanted; SHELLINIT/DIRLIST
Message-ID:  <200009261938.MAA29698@androcles.com>

next in thread | raw e-mail | index | archive | help
This is a request for alpha testers for SHELLINIT/DIRLIST.
SHELLINIT is a shell initialization package intended for use
with any shell; DIRLIST is a component of SHELLINIT which
implements directory lists.  Brief explanations are included
below.

All inputs are welcome, but for this initial alpha release
hackers experienced with one or more shells will most likely
be able to cope (which is why I'm asking in this list).

In the interest of brevity, you can delete now if you are not
interested.  If you aren't sure, the descriptions below may
help.  The preface and introductions to the documentation
(http://androcles.com/dist/shellinit/using/) are slightly
more forthcoming.  The documentation is "complete" but very
much a draft.  It is included in the distribution tarfile
(in postscript and HTML) and is also available separately at
the address below.

The alpha distribution may be downloaded at

http://androcles.com/dist/shellinit/

Description of SHELLINIT:
===================================================================

Shellinit is a framework for convenient and extensive customization
of your *nix shell and working environment.  It supports most common
Bourne-style shells which offer function and alias support. Some
support is available for csh/tcsh, but this is less well-developed
due to the lack of function support in those shells (and the fact
that the author has not used those shells for several years).

The distribution includes 'basic' initialization files which define
the framework and are intended to remain static, and a set of
'private' initialization files which may be customized by each
user.

The framework provides a means to initialize shell functions,
aliases, variables and options, and a simple interface for
'maintaining' or modifying them. It is normally used in conjunction
with the DIRLIST function set, although this is not required.  

The basic framework, once established, allows a user to conveniently:

	+ edit basic or private shell initialization files 
	+ define and select shell prompts
	+ establish tty parameters
	+ monitor the current state of the shell (options)
	+ replace the shell with a different shell
	+ manipulate X terminals (size, location, color, etc.) when
	  a shell is found to be running in one.
	+ maintain directory lists (if DIRLIST is installed)

The installed framework will _replace_ and enhance your existing
shell initialization files (although you may easily include your
existing intiializations through the framework).  The framework
does not attempt, however, to establish or mandate a specific user
environment (aside from the framework itself); its primary purpose
is in fact to provide a simple, consistent means for users to
establish a private, custom working environment.
===================================================================

Description of DIRLIST:

Directory Lists differ from stacks (e.g. as maintained by csh's
pushd/popd) in the following ways:
	1. paths are maintained in a fixed order and position in the
	   list, and can thus be referenced by number.
	2. entries are unique; a pathname is not added to the list if
	   it is already in the list.
	3. multiple, named lists may be maintained.
	4. lists may be maintained across logins.
	5. directories in the list may be named as shell positional
		   parameters (e.g. cp thisfile $4)
	6. lists may be read-only and shared

Lists are maintained interactively as shell variables. A simple
program, "dirlist" is used via shell functions or aliases to
manipulate the lists.  The 'cd' command is (by default) aliased to
'dl_chdir' so that any directory change will maintain the current
list.  You may unalias 'cd', if you like, and alias 'dl_chdir' to
something else, using a simple editor interface to the dirlist
initialization files.

Lists are maintained across logins in files named by the list name.
When a list is selected, the list is read from the file into a
shell variable.  Changes to the list occur as changes to the variable
(not the file).  By default, interactive changes to a list are
saved to the storage file only on command.  An 'autosave' directive
will turn on automatic saving of all changes to the list (provided
that the list is not read-only).  Commands are also provided to
delete entries from the list, and to edit the list interactively.
Of course, there are commands to create lists, and to select the
list to use.  Lists may be shared, but (ordinarily) updated only
by the list owner (interactive changes may be made, but may not be
saved, although they may be written to a private list).  An alternate
"system" list set may be created, which will be read-only to all
users.

The current distribution supports directory lists in all of the
common Bourne-style functions shells (using shell functions).  A
degenerate form of directory lists is suppported for 'csh' and
'tcsh' (using aliases and sourceable files).

CAVEAT: although directory lists were first implemented (and used
for many years) in csh, the author abandoned csh when function
shells became readily available--the current implementation for
(t)csh has been updated a bit specifically for this distribution,
but is not well tested.  In addition, the absence of function
support leaves the 'csh' implementation with fewer features and
*much* less error checking.  Nonetheless, if you are a diehard
(t)csh user, you may find this distribution useful.
===================================================================

--------------
Duane H. Hesser
dhh@androcles.com


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200009261938.MAA29698>