Path: utzoo!attcan!uunet!mailrus!wuarchive!usc!ucsd!ucbvax!hplabs!hpfcso!hpfelg!koren From: koren@hpfelg.HP.COM (Steve Koren) Newsgroups: comp.sys.amiga.tech Subject: Release SKsh (was: Ash) available Message-ID: <13920015@hpfelg.HP.COM> Date: 20 Nov 89 05:54:03 GMT Organization: HP Elec. Design Div. -FtCollins Lines: 338 Finally, a 'release' (non-beta) version of SKsh (which used to be called Ash). I have included the addendum from version 1.2 here. I will be sending 1.2 to Bob Page tonight. After this, I expect the pace of new release to slow considerably. I am shooting for the next one in one month, the next in three or four months, then as needed. This version includes a number of things that were requested so far. - steve (koren@hpfela.HP.COM) ~~~~~~~~~~~~~~~~~~~~~~~~~ CUT HERE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [ title page deleted to save space ] Addendum to Version 1.2 This document describes additions and changes to SKsh since version 1.1. Shell name changed The most obvious change is that the shell is no longer called 'Ash'. There are apparently at least two other Amiga shells called 'Ash', so I changed the name to avoid confusion with those shells. It is now called SKsh ("ess- kay-shell", for Steve Koren's shell). This name change will cause some confusion for this release, but hopefully will prevent it in the future. For now, note the following: 1) The .ashrc and .ashinit files are now called .skshinit and .skshrc. Delete the old .ashinit file and replace it with the new .skshinit file. You can simply rename the old .ashrc file to .skshrc. 2) Delete the old Ash binary and replace it with the new SKsh binary. Directory expansion bug fixed!! By far the most important change in 1.2 is that I fixed a bug in the directory expansion mechanism that was causing system crashes at times. This was a very serious bug, and I had suspected it was there for quite some time, but it took me awhile to find it. It is fixed now. (There was a good reason I called the last two releases 'beta' versions! :-) $LINES and $COLUMNS set automatically The LINES and COLUMNS variables are now set automatically when the window is resized. Actually, the are set at the next interactive prompt; if you resize the window while either editing a command or running a script or function, the variables will not be set. The 'R' option is provided to turn this behavior off if desired. When enabled (by default), this provides a very nice behavior when combined with the new 'ls' output format which uses the COLUMNS variable. You can resize the window horizontally and not have messy directories. However, window sizes which are too small will confuse the line editor. Also, the value set in the COLUMNS variable is two less than the actual column width, since the console device scrolls at less than the actual width. SKSH Amiga Shell Page 2 Addendum to 1.2 Run function changed The 'run' function defined in .skshinit has been changed to use the new -s option to which. It will now report an error if the command to be run is not found in the search path. -s (silent) option added to which A -s option has been added to the which command. which will exit silently if the names are not found in the search path. Without the '-s' option, it outputs a message in this case. The '-s' option is useful in test statements: if [ $(which -s some_file) = '' ] then echo "some_file not found in search path" fi Command Line Editing changes The shift arrow keys can now be used to move to the beginning of a line, the end of a line, the first history line, or the last history line. Also, an -. command was added which inserts the last parameter of the previous line. See the UserMan documentation on command line editing for details. force bug fixed Version 1.1 contained a bug which caused the 'force' command to not evaluate all its arguments. The following function now works correctly, where it would not before: function cd { force -b cd $* dir } dir : bug fixed A bug in 1.1 caused a 'dir :' command to enter an infinite loop. This has been fixed in 1.2. SKSH Amiga Shell Page 3 Addendum to 1.2 ls command enhanced Several enhancements were added to the 'ls' command. Most significantly, a '-F' option was added. This option can be used to change the output of the command in a customizable way. See the entries for the _FILE_S, _FILE_E, _DIR_S, _DIR_E, _EXEC_S, and _EXEC_E variables in the Reference manual for details. 'ls -F' can be used to, for example, underline file names and highlight directory names with a different pen color. The short directory form now has a cleaner output. It will examine the longest file name, the value of the $COLUMNS variable, and adjust its display accordingly. Thus, if there are mostly short file names in the directory, 'ls' will use more columns for output. The '-v' option to 'ls' now prints the total file size as well as the number of entries printed. .skshinit and .skshrc now movable The two initialization files are no longer required to be in the s: directory. They are now searched for in the SKSH: directory. If SKSH: points to s:, then the result is the same. SKSH: can be changed to any legal directory. New tests added Test expressions can now test for the script bit, the archive bit, and the pure bit by using -S, -A, or -P. See the test expression section of the user's guide for details. Break notification Typing the break key (^c) during an SKsh command will cause '*** break' to be printed. Recursive copy only on -r option In version 1.1, the copy command always did a recursive copy (ignoring the -r option). This has been fixed. Touch command added A new 'touch' command has been added which 1) creates files if they do not already exist, and 2) updates the modification times on files if they do exist. SKSH Amiga Shell Page 4 Addendum to 1.2 Clone (-c) option on cp The 'cp' command now supports a -c (clone) option which duplicates the file times and protection status on all files copied. The clone option is not the default, but can be made to act like it with the following alias: alias cp = 'force -b cp -c' quit alias added A 'quit' alias has been added that is like 'exit', but does not execute the value of the LOGOUT first. cp buffer size increased The 'cp' buffer size has been increased to 32K from 4K. This should reduce thrashing when copying a file to another location on the same floppy. Also, the buffer is now dynamically allocated, not placed on the stack as with SKsh 1.1. chmod command added SKsh now has a built-in chmod command. Permissions can be set to an explicit value or added or subtracted. Also, more than one file can be operated upon at once. See the reference manual for details. Documenation updates The documentation has been updated to reflect the changes in 1.2, and some documentation bugs have been fixed. In particular, note that the installation instructions have changed; please insure that you have correctly performed all the steps listed. SKSH Amiga Shell Page 5 Addendum to 1.2 Other Notes I am considering this to be the first "real" (non-beta) release of SKsh. I will, of course, continue to enhance it in the future. I believe most of the critical bugs are worked out now; I'm sure there are still some bugs left, but hopefully nothing like the directory expansion bug above that was causing system crashes. One final note: be sure that you re-install the .skshinit file in the s: directory, since it has changed from version 1.0. The .skshrc file has not changed, so that one need not be re- installed. (In fact, that is the concept behind having two init files; all users changes should be in .skshrc so they will not be overwritten by updates of .skshinit.) SKSH Amiga Shell Page 6 Addendum to 1.2