JC's Tools
JC's Tools
This is John Chambers'
directory of useful tools. What is here will change from
time to time, as I change my mind about which tools I want to
make public.
At the end is a complete list of the files here.
But first a list of the more interesting tools:
Documentation
-
Unix manuals online
-
A simple web interface to the standard Unix online manuals.
This uses the m2h CGI script.
WWW tools
-
ae
-
Ever wonder what your browser tells the server? This script
sends you a dump of its arguments and environment. You can
experiment with adding stuff to the URL, then hit Return and
it will show you how the URL is parsed.
Here's the source.
-
w3cat
-
This is a Web version of the Unix cat ("catenate") command.
It reads one or more URLs and writes their contents to standard output.
It has options to show you what's happening, so it is useful for
debugging network problems.
This program originally used the libwww module,
but performance problems and hung connect calls
led to replacing it with some special-purpose high-performance modules.
If you are curious about how to do such things,
you might examine the modules used by this program.
-
w3ld
-
This does a download of a web directory to the current directory.
It is recursive to a specifiable depth, so it can produce a mirror
of a directory tree. But it only works with directories that look
like directories; it can be defeated by an index.html file.
-
-
Character Set tools
-
PC Keyboard mappings
-
For software that uses the ALT key to shift to the upper 128 characters
in the ISO 8859 character set(s), this show what characters you get.
Most linux software, some BSD, and assorted other programs do this.
-
The ISO 8859-1 character set
-
This is a list of all the 256 characters, one per line, showing
the hex, octal, and decimal encodings, plus the actual character
(for printables) and its descriptive name (for non-alphanumerics).
-
chrset,
-
The chrset file
is a small perl program that outputs the entire annotated character set.
Network Management tools
-
SNMP Over the Web
-
SNMP agents can take months to get working,
they are difficult to use,
and are very slow due to the need to do a series of get-next
requests to get a table of information.
This is a demo of getting the same information via HTTP.
It took me a day to implement,
including a couple of "private MIBs".
It fetches entire tables with a single request,
so it radically outperforms SNMP for table accesses.
Why would anyone bother with SNMP any more?
-
Monitor interfaces
-
A tcl (wish) script that produces a constantly-updated display of
the states of a machine's interfaces.
-
Ping continuously
-
A tcl (wish) script that displays a list of remote hosts and the
timings for pings repeated at N-second intervals.
JavaScript tools
-
Popup Help Window
-
Several ways to get a new window to appear that contains
some "help" information from a separate file.
-
Image preloading
-
This is a JavaScript demo that shows how to preload images for
a second page. It also shows and explains how this may be misused
by unscrupulous web sites to embarrass you.
-
Browser ID
-
JavaScript demo showing how to identify the user's browser
and send different data depending on browser type.
-
-
-
-
Tools
This is a list of shell, perl and tcl tools to do some useful tasks.
- Modules
-
Many of the perl and tcl programs here use one or more of the following modules,
so I've put them all here for easy downloading:
-
Backup.pm
-
renames a file by adding '-' to its name. It's recursive, of course.
-
CGI_Lite.pm
-
the stripped-down version of the libwww module. Very useful for all
but the most complex and sophisticated web applications.
-
DT.pm
-
simple date-time routine.
-
Help.w
-
is a popup-help package for tcl/tk (wish).
-
HTMLdir.pm
-
produces a simple HTML listing of a directory.
-
HTTPcon.pm
-
makes HTTP connection to a host, returns open file.
-
Source.w
-
is a wrapper for the tcl
source
command that searches $PATH.
-
URLdata.pm
-
returns open file for a URL, data only (no HTTP headers).
-
URLhref.pm
-
expand HREF to full URL.
-
URLopen.pm
-
returns open file for a URL, prepared to read HTTP headers.
-
URLtrim.pm
-
discards parameters from a URL.
-
Vopt.pm and
Verbose.pm,
Verbose.w
-
Verbose-mode init routines.
- Programs
-
Many of the following programs use the above modules:
- ABC music programs
-
abc,
abcgui
-
is an experimental browser helper for ABC music notation.
-
abc2bars
-
produces the first two bars of each of a list of ABC tunes.
-
abc2html
-
converts ABC music notation to HTML.
-
abcDesc
-
builds a .htaccess file from .abc files showing the titles.
-
abc_netscape
-
is a netscape helper for ABC music notation, which converts the
file to PostScript and starts ghostview to display the results.
-
abccode
-
is a script that reads ABC music files and outputs numeric codes
for the tunes, using the
abcCode.pm module.
-
abcjoin,
abcmedley
-
join ABC music files, and optionally renumber the tunes,
in somewhat different ways.
-
abcpar
-
add parallel like to a chunk of ABC music notation.
-
abcsplit
-
extracts ABC tunes from a file and writes each to a file whose name
is based on the first title.
-
Converts hostnames to IP addresses and vice-versa.
There is no verbiage, so that its output can be used in scripts.
See also NSlookup
-
abctoc
-
generates a table of contents from ABC music files.
-
abctr
-
transposes a fragment of ABC music notation.
-
Addr
-
A perl wrapper for the nslookup command. It strips away all the
"user-friendly" verbage, so you can use it in other scripts.
-
anon.ftp
-
is a sh script to configure anonymous FTP.
Some systems still come without this working,
and someone at IBM created a very portable script to do the job.
-
b-c
-
converts the verbose-ized *.b files to *.c files,
selecting and/or suppressing verbose output.
-
b64d
-
decodes base-64 files.
-
bmod
-
verbose-izes *.c files, making them compatible with the V.h package.
-
Bp
-
is a simple backup-in-place script, that (recursively) adds a hyphen
to the end of one or more file names. You can restore them with
Rs
-
cpdir,
lndir
-
does a recursive copy of a directory tree, creating all the target
directories and either copying or linking all the files. If you want
to see how to recurse through directories in perl, you might look
at this program.
-
DC
-
is a little tcl-coded Desc Calculator.
When the fancy one in the system library won't do what I want,
I just add a new button to this one and bind it to a proc.
-
Deliver
-
is a mail-delivery program, useful in testing email failures.
-
FindDiffFiles
-
lists files with the same name but different contents.
-
FindHdrFiles
-
lists all the *.h files in the system.
-
FindWaste
-
lists files that are large and aren't being used.
-
Helper
-
is a generic "helper" program that will start up a program
to handle a file.
It works with browsers and other programs that need a similar
plugin "handle this file" capability.
Its config file is a simple, non-proprietary format that you can
edit with any editor.
-
HomeDir
-
produces a list of users' home directories,
with no extraneous text,
so you can use it in a script.
-
Hosts
-
converts nslookup output to /etc/hosts lines.
-
IF
-
displays the status of a machine's interfaces, updated every N seconds.
-
Kill.bsd,
Kill.sys5,
Kill.linux
-
are scripts that kill processes based on a grep of a ps listing.
Different versions are needed due to the variety of ps commands.
-
IFind
-
searches all the system include directories for patterns.
This is useful when porting programs to a new machine and
the #include lines produce "no such file" errors or the macros
come up as undefined functions.
-
These are scripts that kill processes based on a grep of a ps list.
Different versions are needed due to the variations in the ps command,
but one of these should work on most Unix-like systems.
We also have
Kill.aix,
Kill.hpux,
Kill.solaris,
Kill.sunos and,
but these are probably the same as one of the above.
-
Man
-
converts a man page to plain text, suitable for editing.
This uses the stripman command to
remove underscores and other unprintable stuff.
-
Man.html and
m2h
-
are a web interface to the Unix online manuals.
You can look up a man page from your browser,
and references to other man pages are converted to hyperlinks.
-
mfl
-
sorts the names in a Makefile macro definition.
This is an example of a tool designed to be called with vi's
!cmd mechanism to rewrite a chunk of text.
-
Monitor
-
is the tcl/tk interactive tool "rmt", renamed because "rmt" is a
common Unix commant. This is an interactive debugger for tunning
wish scripts, and is an excellent example of how to do IPC using
tcl's simple, elegant "send" command.
-
Mrpl
-
builds a reply header from a block of email headers.
-
NSlookup or
-
Calls nslookup and strips off all its verbiage,
so that its output can easily be used in scripts.
See also Addr
-
O8,
OF,
OV
-
alphabetizes and balances a list of .o files in a Makefile.
This is a really obscure example of a special-purpose tool designed
to be called with vi's !cmd mechanism to do some specific
text massaging. See mfl for another such text tool.
-
pctbar
-
is a wish script that produces a percent-completion bar.
-
Pings,
-
a wish script that produces a window with a running display of
a list of machines and how they are responding to pings.
-
PurgeFiles
-
searches through directories for links to one or more files, and
deletes all of them. Useful for getting rid of old versions and
backups, no matter what they may be called.
-
Rmake
-
is a recursive make, that searches through subdirectories and
makes the targets anywhere that they are found.
-
Rp,
Frp,
Vrp
-
is a perl program that does match-and-replace on a list of files.
Frp rewrites only function names;
Vrp rewwrites only variable names.
-
Rs
-
restores files backed up via Bp
-
RSA
-
is the famous RSA encryption in three lines of perl.
(There is also a nice t-shirt with this code on it,
which is available for sale.
If you would like to be an international arms distributor,
you can become one for just the price of this t-shirt.
Buy one before it becomes legal! ;-)
-
rename
-
does perl pattern match and replace on file names.
This is an excellent example of something simple and useful which
is very easy in perl, and nearly impossible with any other common tools.
-
Pings
-
is a tcl/tk (wish8.0) script for monitoring a list of hosts.
It pops up a window showing a list of hosts.
It runs pings on ay or all of the hosts and shows the responses.
It can also use traceroute to discover the route to a host,
and ping any or all of the hosts along the route.
-
Start
-
is a tcl mimic of the MS-Windows Start button.
-
SumCol
-
sums a column of numbers.
-
supplant
-
searches directories for files with the same name, and makes them
links to an "authoritative" version. This helps eliminate the
confusion and waste space caused by the "broken link" problem.
-
DC
-
produces a window with a list of TCP connections. It is updated every
N seconds, and you can specify a (grep) filter to select only certain
sets of connections.
-
DC
-
is a simple protype of a tcl TCP server process.
-
Test
-
is a software-test program. It runs a suite of tests, compares
the results with samples of correct output, and reports failures.
-
DC
-
is a tcl wrapper for the
traceroute command.`
-
DC
-
is a tcl program that maintains a central cache of the contents of URLs.
Other processes use the
source
command to ask for URLs and get asynchronous notification when the
contents arrive.
-
Unshar and
UnpackKit
-
unpack a flock of shar kits.
They have somewhat diferent extra goodies.
-
DC
-
unpacks a (possibly compressed) tar kit.
-
Upload
-
is a CGI script that copies files to a server's incoming-files directory.
It is designed to be invoked via an HTML form or hyperlink.
-
WNG
-
is "Write to News Group", and sends one of a short list of canned
responses to messages that shouldn't have been posted to the newsgroup.
-
DC
-
is a perl script that knows how to build the whatis files used by the
man command.
-
XR
-
displays X resources, and helps you edit them.
-
XRGB
-
lists all the color names known to your X server, and lets you select
them as foreground or background colors so you can see what they look
like. It can also send the color names to a parent wish process, so
it functions as a generic color chooser.
-
XV
-
is a tcl wrapper for the xv command.
It includes a prototype directory-tree routine.
-
Xrand
-
produces an xterm window with random colors.
-
Zap
-
wipes out the contents of files.
-
-
-
-
Everything
Here's the full list of everything, in alphabetical order:
Name Last modified Size Description
Parent Directory 09-Aug-2008 21:50 -
Addr 01-Oct-2002 09:20 1k
Backup.pm 30-Apr-2005 23:21 2k
Bl 08-Mar-2000 10:24 1k
Bp.sh 04-Sep-2008 13:12 1k
BrowserID1.html 28-Aug-2001 23:08 1k
CGI_Lite.pm 27-Apr-2005 17:19 26k
Colors.w 08-Mar-2000 10:56 1k
Cookie 13-Oct-2004 13:08 1k
Cookies 13-Oct-2004 13:08 1k
CountFiles 05-Nov-2002 14:55 1k
Cp.sh 06-Mar-2002 09:41 1k
Cptree 20-Jan-2002 11:25 1k
Cu 22-May-1998 12:42 1k
DC 08-Mar-2000 12:09 16k
DT.pm 01-Feb-2008 11:54 1k
DateTest 01-Oct-2002 09:20 1k
Dbg.w 08-Mar-2000 12:23 1k
Deliver 10-Jun-2008 08:36 35k
ExtractFortunes 08-Mar-2000 13:48 1k
F 02-Oct-2002 09:11 5k
FRp 03-Dec-1999 14:18 1k
FakeMail 01-Sep-2004 22:29 2k
Find 03-Jun-2004 11:31 1k
FindDbg 08-Mar-2000 16:12 3k
FindDiffFiles 01-Oct-2002 09:20 3k
FindHdrFiles 02-Mar-2000 10:27 1k
FindImageFiles 02-Mar-2000 10:39 1k
FindWaste 01-Oct-2002 09:20 2k
Finda 02-Mar-2000 10:40 1k
Fln 08-Mar-2000 16:19 1k
Font3 23-Mar-2000 10:54 9k
Fonts 15-Dec-2000 15:15 5k
Fonts1 15-Dec-2000 15:15 5k
Fonts3 16-Feb-2000 14:37 9k
FromWhere 30-Sep-1999 22:12 1k
Frp 01-Oct-2002 09:20 2k
GDB 09-Mar-2000 09:46 26k
HTMLdir.pm 14-Jan-1999 16:11 2k
HTTPcon.pm 05-Oct-2005 20:08 5k
Help.w 23-Feb-2000 13:22 13k
HelpText.html 28-Aug-2001 23:08 2k
HelpWin.html 14-Aug-2005 00:26 3k
Helper 01-Oct-2002 09:20 7k
HomeDir 22-May-1998 12:42 1k
Hosts 01-Oct-2002 09:20 1k
IF 18-May-2004 16:03 9k
ISO8859-1.html 08-Nov-2000 11:51 8k
ISO8859-1.txt 19-Feb-2004 21:00 8k
Ifind 09-Mar-2000 10:23 1k
ImgPreload.html 28-Aug-2001 23:08 1k
ImgPreload1.html 10-Dec-2001 14:27 5k
Inc 15-Dec-2002 20:24 1k
Kill.aix 08-Mar-2000 10:01 1k
Kill.bsd 08-Mar-2000 10:01 1k
Kill.hpux 08-Mar-2000 10:01 1k
Kill.linux 07-Jul-2001 12:51 1k
Kill.solaris 08-Mar-2000 10:01 1k
Kill.sunos 08-Mar-2000 10:01 1k
Kill.sys5 08-Mar-2000 10:01 1k
Lc.sh 06-Mar-2002 09:41 1k
Lds 27-Jun-1995 14:35 1k
Lf 27-Jun-1995 14:35 1k
Li 19-Mar-1998 15:26 1k
Lid 27-Jun-1995 14:35 1k
LinkMy 18-Jan-1993 18:25 1k
Litr 01-Apr-1998 18:54 1k
Ln.sh 06-Mar-2002 09:41 1k
Lrt 16-May-1997 11:42 1k
Ls 01-Apr-1998 18:54 1k
Lsd 27-Jun-1995 14:35 1k
Lss 06-Aug-1999 12:46 1k
Ltr 01-Apr-1998 18:53 1k
Lurt 01-Apr-1998 18:54 1k
MailShars 09-Mar-2000 12:06 1k
Make 09-Mar-2000 12:09 1k
Man 09-Mar-2000 12:29 1k
Man.html 20-Mar-2000 13:57 1k
Mkdir 22-May-1998 12:43 1k
Monitor 07-Sep-1999 17:44 5k
Mrpl 01-Oct-2002 09:20 10k
MultUser 22-May-1998 12:43 10k
Mv.sh 06-Mar-2002 09:41 1k
NSlookup 01-Oct-2002 09:20 1k
NSlookup.sh 01-Oct-2002 09:20 1k
Netscape.cfg 02-Apr-2000 21:31 1k
OV 14-Mar-2000 10:46 2k
P 01-Oct-2002 09:20 3k
PCkbd.txt 21-Nov-2003 09:24 1k
PP 01-Oct-2002 09:20 3k
PS.sh 13-Feb-1996 16:51 1k
PSP 13-Feb-1996 16:51 1k
PSPP 13-Feb-1996 16:51 1k
PSU 13-Feb-1996 16:52 1k
PSUP 13-Feb-1996 16:52 1k
PSdate 20-Nov-2000 13:13 1k
PSftr 14-Oct-2005 13:51 3k
PShdr 14-Oct-2005 13:51 2k
PU 01-Oct-2002 09:20 3k
Pc 14-Nov-1997 08:52 1k
People 07-Aug-2000 21:37 10k
Pg 18-Sep-2003 09:15 1k
Pings 17-Apr-2003 18:51 34k
Post 13-Feb-1996 16:52 1k
Pr1 23-Feb-1998 19:16 1k
Pr2 01-Oct-2002 09:00 1k
Ps.sunos 03-Dec-1999 14:08 6k
PurgeFiles 01-Oct-2002 09:20 2k
QuoteReply 16-Dec-2002 11:10 1k
RSA 01-Oct-2002 09:20 1k
Relink 01-Oct-2002 09:00 3k
ReplyHeaders 16-Dec-2002 10:45 10k
Restore 14-Mar-2000 12:32 1k
Rm.sh 08-Nov-1991 14:46 1k
Rmail 01-Oct-2002 09:20 8k
Rmake 08-Jun-2008 11:36 3k
Rp 01-Oct-2002 09:20 4k
Rs 19-Jul-1993 09:16 1k
Save 14-Mar-2000 12:32 2k
Saying.cgi 15-Jan-2004 11:14 1k
Send 10-Jun-2008 08:36 35k
SendMail 01-Oct-2002 09:00 3k
Source.tcl 03-Dec-1999 14:21 2k
Source.w 03-Dec-1999 14:08 1k
SplitSayings 01-Oct-2002 09:20 1k
StaffSheet 14-May-1999 10:44 1k
Start 14-Mar-2000 14:15 5k
TCPlist 14-Mar-2000 19:32 7k
TCPserver.w 29-Apr-1998 09:44 1k
TCPstat 13-Nov-2000 10:22 7k
Test 01-Oct-2002 09:20 10k
Threadize 01-Oct-2002 09:20 2k
Top 29-Sep-1993 14:39 1k
TraceRoute 13-Apr-2001 13:25 16k
URLcache 03-Dec-1999 14:08 8k
URLdata.pm 03-Dec-1999 14:08 2k
URLhref.pm 26-Jul-2006 15:02 1k
URLopen.pm 27-Apr-2005 09:22 6k
URLtrim.pm 01-Apr-2003 10:43 1k
UnpackKit 13-Feb-1996 16:52 1k
Unshar 13-Feb-1996 16:52 1k
Untar 07-Nov-2002 09:30 1k
Upload 01-Oct-2002 09:20 4k
Verbose.pm 26-Jan-2000 09:05 1k
Verbose.w 25-Sep-2002 17:08 2k
Vopt.pm 05-Nov-2007 09:36 2k
Vrp 01-Oct-2002 09:20 2k
WNG 01-Oct-2002 09:20 9k
Whatis 01-Oct-2002 09:20 1k
XR 05-Nov-1997 15:24 8k
XRGB 05-Nov-1997 15:25 3k
XV 16-Mar-2000 20:10 2k
Xcgi 01-Oct-2002 09:20 2k
Xdefaults-gv 23-Oct-2000 14:05 1k
Xdefaults-kendy 23-Oct-2000 14:05 2k
Xdefaults-netscape 23-Oct-2000 14:05 1k
Xdefaults-tiel 23-Oct-2000 14:05 3k
Xdefaults-xterm 23-Oct-2000 14:05 1k
Xrand 27-Feb-2004 11:41 1k
Xsu 02-Oct-1995 13:10 1k
Xterm 04-Apr-1998 12:00 1k
abc 02-Jun-2004 17:57 14k
abc+3 17-Aug-1997 18:24 1k
abc-3 17-Aug-1997 18:24 1k
abc2bars 03-Dec-1999 14:08 3k
abc2code 03-Dec-1999 14:08 3k
abc2html 03-Dec-1999 14:08 1k
abcCode.pm 28-Jan-2008 16:06 14k
abcCode.pm- 09-Dec-2003 16:59 12k
abcDesc 25-Sep-2005 21:31 1k
abc_netscape 03-Dec-1999 14:08 3k
abcgui 02-Jun-2004 17:57 14k
abcjoin 15-Aug-2006 14:14 6k
abcmedley 31-Jul-2008 11:25 4k
abcpar 16-Mar-2000 20:21 2k
abcprog 03-Dec-1999 14:08 1k
abcsplit 21-Sep-2005 20:38 8k
abctable 03-Dec-1999 14:08 22k
abctr 09-Dec-2005 12:53 8k
abctri 23-May-2003 11:53 2k
abctrn 17-Aug-1997 18:26 4k
abctrs 17-Aug-1997 18:26 4k
ae 13-Oct-2004 13:08 1k
ae.cgi 13-Oct-2004 13:08 1k
anon.ftp 20-Sep-1995 15:19 4k
b-c 07-Mar-1996 10:28 1k
b64d 19-Mar-2004 17:31 1k
bashenv 14-Jul-2000 16:25 1k
bashrc-linux 30-May-2004 14:37 1k
bmod 13-Feb-1996 16:52 1k
bmp2gif 01-Oct-2002 09:20 1k
check.c 28-Jun-2002 14:02 22k
chrset 03-Dec-1999 14:21 7k
cpdir 24-May-2005 11:47 3k
crp 28-Jan-1999 21:54 2k
cshenv 14-Jul-2000 16:25 1k
cshrc-FreeBSD 05-Dec-2006 21:08 3k
dos2unix 01-Oct-2002 09:20 1k
exrc-OSX 31-Dec-1969 20:09 1k
exrc-linux 21-Jun-2004 10:37 1k
frMorse 14-Nov-2005 14:34 3k
frp 28-Jan-1999 21:54 2k
ge 20-Feb-2004 17:22 1k
gifdemo 06-May-2004 21:55 6k
giftest 05-Nov-1997 15:36 1k
gmtime 17-May-2005 12:39 1k
gs.sh 13-Feb-1996 16:52 1k
hummingbird.html 15-Mar-2001 19:50 1k
img/ 06-Mar-2003 22:41 -
inc.sh 29-Sep-1993 14:38 1k
js/ 22-Nov-2000 09:33 -
kderc-linux 29-Dec-2006 15:32 1k
keyboard.txt 15-Oct-1999 16:15 1k
kill.freebsd 08-Mar-2000 10:01 1k
kshenv 14-Jul-2000 16:25 1k
lndir 24-May-2005 11:47 3k
loadenv 14-Jul-2000 16:25 1k
localtime 01-Oct-2002 09:20 1k
lt 01-Oct-2002 09:20 1k
m2h 13-Oct-2004 21:39 5k
mac2unix 01-Oct-2002 09:20 1k
mailto.html 08-Mar-2000 10:01 1k
mfl 01-Oct-2002 09:20 2k
mkdep 06-Dec-1999 11:58 2k
pctbar 31-Mar-2000 14:01 1k
proto.d 01-May-2002 09:06 1k
proto.html 03-Nov-2005 18:22 1k
ranlib.sh 22-May-1998 12:43 1k
rename 01-Oct-2002 09:21 1k
rentry.w 04-Jan-2001 14:17 1k
rp 28-Jan-1999 21:54 2k
scan.sh 29-Sep-1993 14:39 1k
show.sh 29-Sep-1993 14:39 1k
stripman 01-Oct-2002 09:21 1k
subst 02-Jun-2000 10:32 3k
supplant 01-Oct-2002 09:21 3k
tarbkup 08-Nov-2005 12:28 1k
tcpproxy 08-Mar-2000 10:01 64k
tcshenv 14-Jul-2000 16:25 1k
tcshrc-FreeBSD 05-Dec-2006 21:08 3k
tcshrc-OSX 07-May-2005 17:12 3k
tcshrc-SunOS 30-Mar-2000 09:42 6k
tcshrc-linux 22-Jul-2005 13:38 7k
tkfontscale.w 04-Jan-2001 14:09 1k
totitlebar 30-Mar-2000 13:51 1k
trim 05-Apr-2006 15:28 1k
ts 02-Jan-2001 15:22 1k
unix2dos 01-Oct-2002 09:21 1k
unix2mac 01-Oct-2002 09:21 1k
ut 17-May-2005 12:39 1k
vrp 28-Jan-1999 21:54 2k
w3cat 05-Oct-2005 20:09 12k
w3ld 01-Oct-2002 09:21 21k
w3post 13-Oct-2004 13:09 7k
This directory contains random "shell scripts" for various shells. It
is intended to be included in your search path. Note that the term
"shell" is used generously, and includes things like perl, fsh, etc.
There are some subdirectories for specific shells, and there are
likely to be adjacent directories with names like "sh.bsd" for scripts
that require the bsd version of the Bourne shell.