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>