[comp.sys.amiga.misc] SKsh 1.7 available

koren@hpfcdc.HP.COM (Steve Koren) (05/06/91)

SKsh 1.7 is now available.  SKsh is a Unix ksh like shell which runs on
the Commodore Amiga line of personal computers.  It is about as close as
you can get to a Unix environment under AmigaDos without actually
running Unix.  SKsh is copyrighted, but free, and is available via
anonymous FTP to ab20, or from Fish disks.

A more complete description of 1.7 has been sent to the moderator of
comp.sys.amiga.announce and should be appearing there shortly.  A very
brief list of some new features is included below.

New features include: operation on 3000/2.0 systems, a CDPATH, a
MANPATH, xargs, split, line, new control structures including && and ||,
saving and loading of history lists, ${var:-word} operations, new usage
messages, car, cdr, new supported scripts including pushd/popd, shared
mode for rapid invocation and low mem usage, better file completion,
returning exit codes from scripts/functions, mkdir -p, short circuit
evaluation, works with msh, better support for scripts from other
shells, a customizable message file, vastly improved installation, and
many other features and bug fixes.

[ note: when I tried to upload SKsh017.lzh to ab20 this weekend, there
was no free disk space.  I will upload it as soon as there is enough
free space. - steve ]

koren@hpfcdc.HP.COM (Steve Koren) (05/06/91)

Dan Zerkle has mentioned that he'd rather post something shorter
than the SKsh addendum in c.s.a.announce.  A shorter and more
generic description will appear there, and I will post the addendum
here.

  - steve

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cut here ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ title page deleted to save space ]





       Addendum to Version 1.7

	 This  document  describes  additions and changes to SKsh  since
	 version 1.6.  Version 1.7 has many significant new features.


	 SKsh runs on 3000 systems

	    SKsh now runs on  3000  systems, at least to the extent that
	    it no longer crashes  as  it  used  to.   When  2.0  becomes
	    widely  available  on  2000  systems, future SKsh's will run
	    only under AmigaDos 2.0.


	 "2" option added

	    If  this  option flag is set, SKsh  will  attempt to execute
	    AmigaDos  2.0  internal  commands (but only if you are actu-
	    ally  running 2.0).  I have made this  an  option because in
	    SKsh  1.7,  executing AmigaDos 2.0  builtin commands doesn't
	    work  right.   I'll   probably fix it later when I have some
	    real  documentation on how the 2.0 calls  work.   Right  now
	    I'm just  trying to figure it out by looking at the function
	    prototypes, and that doesn't work very well.  This  flag  is
	    reset by default.


	 RECUR_DEPTH variable added

	    RECUR_DEPTH is  a  variable which controls the maximum depth
	    that the SKsh parser  will  recurse.   Larger  values of RE-
	    CUR_DEPTH  require more stack space  but  enable more deeply
	    nested function calls, scripts, etc.

	    This  variable is  described in more detail in the reference
	    manual.  Please see that document for details.


	 CDPATH variable added

	    A  CDPATH  variable,  similar  to  PATH,  now  permits cd to
	    search  a  series  of  directories to find its  destination.
	    Any non-qualified path name will be searched for in all  di-
	    rectories in the  CDPATH.   The  new  1.7  path function can
	    modify the CDPATH as well as the PATH variable.

	    Also, many  people  do  not  realize that the mplist command
	    can  provided  a  shortened  method  to  "cd"  to  different
	    directories.  For example, you can have the command:

	      cd d1

	    really mean:



       SKsh Amiga Shell             Page 2              Addendum to 1.7










	      cd sys:usr/commands/src/cmd1/directory-one

	    by adding the following line to your .skshrc file:

	      mplist -a 'd1=sys:usr/commands/src/cmd1/directory-one'


	 MANPATH variable added

	    MANPATH  is  similar to  CDPATH, but for the man script (see
	    description  below).  The new  path function also is able to
	    modify the MANPATH variable.


	 man script has additional abilities

	    The  man  command, which is now  a  script,  has  additional
	    abilities.  It will now  search  for  files  ending in .MAN,
	    .doc, or .txt, and will search in any  number of directories
	    for the files.  This is  controlled by the MANPATH variable,
	    described above.


	 SKsh documentation available though manpages

	    The  contents of the Reference.doc and ExtCmds.doc files are
	    now  available  though  the  man command.  The  new  install
	    script  (see  below) will  optionally create the manpage en-
	    tries  from  these  files  by  deleting the page headers and
	    footers,  and  breaking the .doc files into separate manpage
	    entries.


	 line builtin added

	    A  line  command has been added  which  functions similar to
	    read,  but  allows the use of the full SKsh command line ed-
	    iting  facilities to input lines.  line may only input lines
	    from the keyboard, not a file.  The syntax is:

	      line var [ prompt ] [ pnpc ]

	    Where  pnpc  is  similar to the  PNPC variable, but for this
	    prompt.  (See the PNPC entry in Reference.doc for details).

	    line  is  recommended  instead of  read wherever input is to
	    always be read from the keyboard.








       SKsh Amiga Shell             Page 3              Addendum to 1.7










	 skshbin: and skshscr: aliases added

	    In  addition to the old sksh:, two new aliases are  required
	    to run sksh properly.  These aliases point to the  directory
	    containing   the   SKsh   external  binaries,  and  scripts,
	    respectively.  This change  will  more  closely  standardize
	    SKsh environments.  Both of these aliases are added  to  the
	    SKsh path  by  default, so they need not be further added in
	    an .skshrc file.


	 xargs command added

	    The new  xargs command is similar to the Unix command of the
	    same name.   xargs can be used to circumvent the 255 charac-
	    ter  command  line  length  limitation  in  AmigaDos.  xargs
	    reads  its  standard input, which should be a list of files,
	    and  executes  commands  multiple times on these files.  The
	    standard  input is produced by either the SKsh find utility,
	    or  more  commonly, the echo builtin.  Since echo is a shell
	    builtin, it can  handle  any  number of files.  For example,
	    suppose you have 100 .c files  in  a  directory.   Normally,
	    you  could  only  fgrep through 30 of these, since  AmigaDos
	    will  not  permit a command line longer than that.  However,
	    with xargs:

	      echo *.c | xargs fgrep -il mytext

	    xargs  will  properly construct several fgrep command lines,
	    each up  to  250  characters in length.  As another example,
	    suppose you wish to copy those files to ram:.   The  -i  op-
	    tion to fgrep tells it  to  substitute file names for the {}
	    parameter:

	      echo *.c | xargs -i 'cp {} ram:'

	    xargs  supports many  more  options and can do other things.
	    See  the  documentation  entry in  the  ExtCmds.doc file for
	    more  detailed information on xargs.  It supports all of the
	    Unix options, plus several more.


	 File completion is faster

	    File name  completion performance has been improved on large
	    directories.   This   improvement will be most  noticed when
	    the  machine is heavily loaded.  Disk seek time can still be
	    an  overriding  factor,  but  for  directories   which   are
	    buffered or on a ram disk, completion  is  up  to  twice  as
	    fast.





       SKsh Amiga Shell             Page 4              Addendum to 1.7









	 complist bug fixed

	    If you add  a  device name ending in ":" to your "complist",
	    and  use  file  completion to insert the name on the command
	    line, SKsh will no longer insert a trailing "/".


	 Command line editing bug fixed

	    The  "ILP"  command (insert last parameter), normally mapped
	    to "<esc> .", will no  longer  insert a ">" sign if it finds
	    one  as  the  first  character of the last parameter.   This
	    means that if your  previous command line ends with ">file",
	    and you use the  ILP  command, only "file" will be inserted,
	    without the ">" sign.  This is more often desired.


	 PNPC2 variable added

	    A  PNPC2  variable has been added.  It is identical in func-
	    tion  to  PNPC  except that  it  functions for the secondary
	    prompt string.   This  enables you to have different numbers
	    of  escape  sequences in  your  primary and secondary prompt
	    strings.


	 Default prompt string changed

	    The  default prompt string, set up in  .skshinit,  has  been
	    changed  to  include the history line number and cli number.
	    If  you  reset the prompt in your .skshrc, you will not  see
	    this change.


	 numloop statement added

	    A  new  statement,  similar to the old "for"  statement, has
	    been  added.   The  new   numloop statement allows iteration
	    over a  range  of  numbers simply without using a while loop
	    and  inc  statement.   Iterations can be up or down, and can
	    step by 1 or a predefined amount.

	    This  new   statement  is  described  in  the  Reference.doc
	    document.  Please see that description for more detail.












       SKsh Amiga Shell             Page 5              Addendum to 1.7









	 history command enhanced

	    The  history command now has additional abilities.  The his-
	    tory list can be cleared  using "history -c".  More signifi-
	    cantly,  history can now be saved and loaded to  files.   To
	    save  a  history list  to  a  file,  simply execute "history
	    >histfile".  To  reload the history from the file, using the
	    "-l"  option to  history: "history -l <histfile".  This will
	    reload  the  exact  history  state,  including the value  of
	    $CMDNUM.   This  feature is often useful to save the history
	    stack  between  executions of SKsh.  A set  of  scripts  has
	    been provided to facilitate history saving and loading;  see
	    the section below on the hist* scripts.


	 pathconv command added

	    A  new  pathconv  command can  be  used  to  convert between
	    AmigaDos and Unix style filenames.   For  example, 'pathconv
	    -u "//foo"'  might  return  "../../foo",  and  'pathconv  -a
	    "../../foo"' would return "//foo".


	 Support for ${param:-word} variable expansions added

	    Unix ksh  supports several methods to test for variable val-
	    ues and  perform variable expansions at the same time.  SKsh
	    now supports a few of these:

	      ${var}       - Like $var, but ${a}text can be used to  ex-
	                     pand $a in front of  "text",  since  $atext
	                     would  try  to  expand the "atext" variable
	                     instead of the "a" variable.

	      ${#var}      - Expands to the text length of $var

	      ${var:-word} - Expands to $var if $var is set.   Otherwise
	                     expands  to  word,  which  may  itself be a
	                     variable (as in ${FOO:-$PWD} ).

	      ${var:=word} - Similar to  ${var:-word},  but  assigns the
	                     result to "var" if it is  not  already set.
	                     Useful for  assigning defaults to variables
	                     while simultaneously using the result.


	 Input/output redirection to same file doesn't clobber file

	    In  previous SKsh  versions, if a pipeline of the form "com-
	    mand <file >file" was run, were "file"  was  the  same  file
	    for both the  input and output of the pipeline, the file was
	    clobbered  before  an  error  message was issued.   This  no
	    longer happens and the file is left intact after the error.



       SKsh Amiga Shell             Page 6              Addendum to 1.7










	 Added -n flag to disable .skshrc, .skshinit

	    SKsh can now  be  started  using the -n flag, which tells it
	    to  ignore any .skshrc and  .skshinit  files  which  may  be
	    present.  This is not  normally useful for interactive invo-
	    cations of SKsh, but  it  may  occasionally be useful to run
	    simple scripts which do not require either setup file.


	 Usage message added to all builtins, extern cmds, scripts

	    All  SKsh  builtin  commands, external binaries, and the new
	    scripts (see  description below) now will print a usage mes-
	    sage if given '-?' as the first  parameter with no other pa-
	    rameters present.  (The  '-?'  should  probably be quoted to
	    avoid  being interpreted as wildcards by the shell expansion
	    mechanism).   An   additional and slightly  more  convenient
	    method  to  generate the usage messages uses the new "usage"
	    script, described below.


	 Lisp like car, cdr functions added

	    Two new shell  builtins (car and cdr) can be used to extract
	    elements  from  strings  containing lists of elements.   The
	    default  separator  character is a space, but  this  can  be
	    changed  with  an  additional option.  For an example of how
	    to use these  new  functions, see the new definitions of the
	    directory stack scripts (pushd, popd, and dstack).


	 File completion bug fixed

	    File  completion no longer writes a "0" to  memory  location
	    "0".


	 toupper/tolower/capital builtins added

	    New  builtins have been added  which  are  similar to "echo"
	    but  echo  arguments in  upper case, lower case, or with the
	    first  letter of each  argument capitalized.  These commands
	    took very little space to add since  they  share  code  with
	    the "echo" builtin.


	 New supported scripts added

	    Several  scripts  which  were   previously  shipped  in  the
	    Stuff.sksh file have  been  removed, and are now supplied as
	    a  "standard" part of SKsh as stand alone scripts.  In addi-
	    tion, several new scripts have been added (see below).



       SKsh Amiga Shell             Page 7              Addendum to 1.7









	    This  approach  has  several advantages.  First, as scripts,
	    they are only in memory when you need  them,  as  opposed to
	    functions which take up ram all the time even if  you  don't
	    often  invoke them.   Second, this approach reduces the time
	    necessary  to  invoke  SKsh,  since  the  functions are  not
	    loaded  then.  Third, I  can  integrate these functions with
	    the rest of SKsh, document them in Reference.doc, etc.

	    These  scripts  will  have  to  be  installed in a directory
	    pointed to by the new  skshscr: alias.  The new installation
	    script  will  perform this  task  for  you.   (See  the  new
	    "Install.doc"  for  details).  It is possible to break these
	    scripts  by  changing  values  of  certain SKsh options.  In
	    particular, i, l, and  N  are  dangerous, and I don't recom-
	    mend you change them from their  defaults if you wish to use
	    these scripts.

	    Some lesser used  functions are left in the Stuff.sksh file,
	    while  others  are  now  standalone scripts.   The  list  of
	    scripts is contained in the  ReadMe_1st.doc  file.   Scripts
	    are also now documented in Reference.doc.


	 Usage script added

	    A  new  usage script can be used to print the usage messages
	    from any SKsh  builtin, script, or external binary.  For ex-
	    ample, "usage history" results in:

	      Usage: history [ -n ] [ >histfile ]
	             history -e [ pattern | number | offset ]
	             history -c
	             history -l <histfile

	    The  usage command may also be used to  print  usage message
	    for  any  other  AmigaDos  command which will accept '-?' as
	    the first parameter and print a usage message as a result.


	 chext script added

	    A  new  external script  called  chext can be used to rename
	    files to  use  different extensions.  For example, "chext .c
	    *.bak" would change all files ending in .bak to end in .c.


	 histsave, histload, histlist, histrm scripts

	    Four new  scripts  facilitate  the  use  of  history  files.
	    histsave  save  the  current  history  in   a   file   named
	    s:SKsh_Hist.<n>, where <n> is the $CLINUM by default or  any
	    other  string.    histload loads a previously saved  history
	    file.    histlist lists available history files, and  histrm
	    deletes all saved history files.  For example:


       SKsh Amiga Shell             Page 8              Addendum to 1.7










	      [prompt]: histsave compile
	      [prompt]: histsave session2
	      [prompt]: histlist
	          compile
	          session2

	    See the  documentation  in  Reference.doc for information on
	    these functions.


	 && and || support

	    Unix  ksh  supports linking commands with && and ||.  In the
	    first form,  the  right  side  is  executed only if the left
	    side is successful.   In  the  second, only if not.  This is
	    useful,  for  example, to copy and remove a file if the copy
	    was successful:

	      copy myfile mydir && rm myfile

	    or to execute function clean_up if function my_func failed:

	      my_func param_1 param_2 || clean_up

	    Any  number  of  control  structures may be chained together
	    using && and ||,  although chaining large numbers may neces-
	    sitate  increasing  the  RECUR_DEPTH variable.  The  use  of
	    these   operators  is   described  in  more  detail  in  the
	    UserMan.doc file.


	 split command added

	    A  new  external  split  command can be used to  split  text
	    files into smaller files  with  a  given  number of lines in
	    each file.   This  is  sometimes useful for dealing with un-
	    wieldy  uuencoded files or text files too large to  comfort-
	    ably edit in one piece.  The files can be re-assembled  with
	    the  external  cat  or  join commands.  See the  ExtCmds.doc
	    file for information on using split.


	 File completion, commands work with spaces in filenames

	    The  file  completion  mechanism has been enhanced to insert
	    backslash  escapes  before spaces if the filename being com-
	    pleted  contains imbedded spaces.  A backslash escaped space
	    will also no longer break parameters, so that:

	      ll my\ file

	    will correctly list the file named "my file".



       SKsh Amiga Shell             Page 9              Addendum to 1.7










	 exit code can now be set from a script or function

	    The  old  SKsh  return builtin would not permit an exit code
	    to  be  returned from a script or  function.   The  new  one
	    does,  but  introduces a slightly different meaning.  return
	    with  no  parameters  functions as it did before.  With  one
	    parameter,  <n>,  return sets the return code to <n> and re-
	    turns one  level  (it  used  to  return <n> levels).  Return
	    with two  parameters, <n> and <l>, sets the exit code to <n>
	    and returns <l> levels.

	    This new  feature permits one to test the return code from a
	    function:

	      function foo {
	         if [ <some condtion> ]
	         then return 1
	         else return 0
	         fi
	      }

	      if foo
	      then <action>
	      else <action-1>
	      fi


	 mkdir builtin supports -p option

	    mkdir  now  supports the -p option.   mkdir -p followed by a
	    full  path  name  will  create all  directories necessary to
	    make  the  path.   For   example, suppose that the directory
	    ram:foo  exists and is empty.   "mkdir -p ram:foo/bar/tst/a"
	    would     create    ram:foo/bar,    ram:foo/bar/tst,     and
	    ram:foo/bar/tst/a all in one step.   In  addition,  it  will
	    issue no error codes for directories it cannot make.


	 tackon builtin added

	    The  new  tackon builtin will assemble its parameters into a
	    complete  path,  inserting "/" characters where needed.  For
	    example,  "tackon   ram:   make/   a   path"   would   yield
	    "ram:make/a/path".  In  addition, a -e option will backslash
	    escape any wildcard or whitespace characters.










       SKsh Amiga Shell            Page 10              Addendum to 1.7









	 skshbin: and skshscr: added

	    These two aliases point to  the  location of the SKsh exter-
	    nal  binaries and scripts, respectively.  These are included
	    in  the  SKsh  default search path, so you will not have  to
	    add them in your .skshrc file as  was  necessary with previ-
	    ous SKsh versions.  If your .skshrc file added the  external
	    binary  directory,  it  should  be  modifed to no longer  do
	    this.  In  addition, you will need to change your s:startup-
	    sequence file to create these aliases.


	 [ expr ] style expressions can be used independently

	    Previously, [ expr ] clauses needed to be used  in  "if"  or
	    "while" loops.  They can now be  used  independently, a fea-
	    ture  which  is  useful when combined with the '&&' and '||'
	    operators  mentioned above.  For example, the following line
	    sets  the  "f"  variable to be  ram:foo  only  if  the  file
	    ram:foo exists, and echos "Hi!":

	      [ -f ram:foo ] && f='ram:foo' && echo 'Hi!'

	    This is  usually more compact than using an if statement for
	    one or two small operations.   There  is  currently a bug in
	    that [ expr ] will not set the $? variable.  It  will,  how-
	    ever,  return  the  correct true/false value, as seen in the
	    above example.  The use of  this  feature  is  described  in
	    more detail in the UserMan.doc file.


	 path function removed, changed to script

	    The  path function has been removed and changed to an exter-
	    nal  script.   This   reduces in invocation time and memory,
	    and  since  the  path function in only invoked infrequently,
	    the  time  overhead of the script is not large.   This  also
	    permits the path  function to be more complex and understand
	    the CDPATH variable (see below).


	 path script understands CDPATH and MANPATH as well as PATH

	    The new  -cd and -man options to the path script tells it to
	    change  the  CDPATH or MANPATH instead of the PATH.  The old
	    -add  option can be used  with  or  without the -cd and -man
	    options.  For example,

	      path -cd -add /users /usr/pd
	      path -man -add MAN:subdir1






       SKsh Amiga Shell            Page 11              Addendum to 1.7









	 expr -a and -o use short circuit evaluation

	    -a (and) and  -o  (or)  clauses  in  expr statements now use
	    short  circuit  evaluation, which means they  only  evaluate
	    the parts of  the  expression they need to.  (For example in
	    "[ 2 -lt 0 -a 3 -lt 9 ]", only the "2 -lt  0"  part  of  the
	    expression  is  evaluated,  since  because it is false,  the
	    value of the "3 -lt 9"  expression does not matter in deter-
	    mining the  final result.  This is faster, and mostly trans-
	    parent, but I  mention it here because it is possible to see
	    slightly  differences if the  expressions have side effects.
	    This should affect very few scripts.


	 Parameters may be passed to scripts from other shells

	    SKsh  has  always had the  ability to run scripts from other
	    shells.   For   example, you might have scripts from "ARexx"
	    or  "CShell"  (originally by Matt Dillon and recently worked
	    on  by  Urban  Mueller).    However, there was  previously a
	    limitation  in  that  no  arguments could be passed to these
	    scripts.   Auto-shell   sourcing will now  pass  parameters.
	    For  example,  consider the  "phonebook.rexx"  script  which
	    comes with ARexx.  If you modify  the  first  two  lines  to
	    read:

	      /*c:rx
	      */

	    You can then run  this  script  directly from SKsh (provided
	    it is in your search path and the script bit is  set).   For
	    example:

	      phonebook.rexx bill

	    will  execute  the  "phonebook" rexx command with "bill"  as
	    one parameter.


	 SKsh message file

	    The text of  SKsh  error, help messages, usage messages, and
	    some  default information is now stored in a file and loaded
	    at  run  time.   This  allows the messages to be customized.
	    The file will only be read by the  first  SKsh  invoked (see
	    "Shared SKsh modes" below).

	    The  message file is named "sksh.msg" and MUST  exist in ei-
	    ther the "sksh:"  directory or in $PWD.  (It will usually be
	    in "sksh:").  If it is not found, SKsh WILL  NOT  RUN.   The
	    Install_1.7.pp  script  will  correctly  install this  file.
	    The  format of the message file is fairly unforgiving of er-
	    rors,  and  it  is  explained  in  detail in the UserMan.doc
	    file.


       SKsh Amiga Shell            Page 12              Addendum to 1.7











	 Shared SKsh Modes

	    SKsh  now  supports three shared modes, known  as  "slightly
	    shared",  "somewhat shared",  and  "very  shared".   In  the
	    shared  modes,  every SKsh  run  after the first will detect
	    that there  are  other  shells  running, and share some data
	    with the  original shell.  This will result in a memory sav-
	    ings of up to 25K per shell, and can also make  shell  invo-
	    cation nearly  instantaneous.   Using "very shared" mode can
	    reduce  startup time to less  than  a  second for a resident
	    SKsh, since nearly all data  is  inherited from another run-
	    ning shell and no initialization files need be read.

	    There  are  several  important things to  note  about  using
	    shared modes with SKsh.  Please  read  the  appropriate sec-
	    tions of UserMan.doc and Bugs.doc if you plan to  use  these
	    modes.


	 SHARED_TYPE variable

	    This  variable  contains the string 'master' if this SKsh is
	    the shared master.  If so, this shell  must  exit  after any
	    slave shells.


	 OS_VER variable

	    This  variable  contains  either the string  '1.3',  or  the
	    string  '2.0',  depending on  the  version of AmigaDos under
	    which the shell is being run.


	 New install script added

	    A  new  install script, called  Install_1.7.sksh can be used
	    to  assist with SKsh  installation or update.  (It functions
	    whether or  not  there  is  already an SKsh installed on the
	    system).

	    To use this script, the SKsh  distribution archive should be
	    extracted  to  a  directory,  preferably on ram: if you have
	    the space.  The script will ask you  several questions about
	    the  intended  locations of your SKsh files (and if you  al-
	    ready  have  the  sksh:,  skshbin:, and skshscr: aliases as-
	    signed, it will use  these  as  defaults).  It will then in-
	    stall the SKsh  files  in  their  proper  locations, set the
	    proper  permission  bits,  check  the  values of your sksh*:
	    aliases,   checksum  the   destination  files,  install  the
	    manpages,  and  generate  a  checklist of  additional manual
	    tasks which may be  necessary (such as modifications to your
	    s:startup-sequence file).


       SKsh Amiga Shell            Page 13              Addendum to 1.7










	    The  script  MUST  be  invoked from the directory containing
	    the  unarchived SKsh files, and  it  MUST  be  run  from  an
	    AmigaDos CLI as follows:

	      1> sksh -n Install_1.7.pp

	    The  -n  parameter is important.  Also, both .pp and regular
	    forms of  the  script  are  provided.   The  .pp  version is
	    faster and you should run that.  The  other  is  provided in
	    case  you  wish  to  examine the script (which  is  somewhat
	    long).

	    This  script  is  probably  only  useful for installing SKsh
	    onto a hard disk.  I have not  tested  it  for  installation
	    onto a floppy.

	    Please read  the  new  Install.doc file for more information
	    on the script.





































       SKsh Amiga Shell            Page 14              Addendum to 1.7









       Misc. Notes

	 The Install.doc file has changed substantially from  SKsh  1.6.
	 Please read it again before installing  1.7.   The  Install.doc
	 file now mostly explains the install script.  Far fewer  manual
	 actions  are  necessary to  install a new SKsh or update an old
	 one than with SKsh  1.6.   Installation will get even easier in
	 future versions.

	 I am  no  longer  distributing a "zoo" file for SKsh.  There is
	 now only a "lharc" archive.  Also,  the  archive  contains sev-
	 eral  subdirectories - it is best to use  the  "-m"  switch  to
	 "lharc" to have it  create these directories without prompting.
	 The new  install script expects all files to be in their proper
	 subdirectories, and it  will  complain if they are not.  There-
	 fore, if you  upload SKsh to bulletin board systems, give it to
	 friends,  etc,  it  is  imperative that the  EXACT .lzh file is
	 transferred.

	 My  email  address has  changed  since  1.6.   Please  see  the
	 MiscInfo.doc file for the new address.

	 The following line can  be  used  in  a  "view.magic"  file  to
	 detect SKsh preparse files:

	      SKsh preparse file:OFFSET:0:28534B53485F50502C....29

	 I would like to make  a  request of people who further distrib-
	 ute  SKsh  (uploading it to BBS's, etc).  I would  appricate it
	 if  you  distribute the  ORIGINAL SKsh archive, and not a reas-
	 sembled one.  There are  a  large  number of files present, and
	 getting  them  right  is  something of a tricky  business.   It
	 makes life easier  for  users down the road if they receive the
	 original archive, and the  Install_?.?.pp script is less likely
	 to  complain  about  missing or incorrect files.  Thanks!  That
	 said,  as  always, feel free to  give  SKsh  to  anyone who you
	 think might be interested.

	 One  common  question people have is why short command lines do
	 not get added to the  history list.  You can control this using
	 the $LLMIN variable.  $MAXDIST  also  affects the way lines get
	 added  to  the  history list.  Check out the  documentation for
	 these variables in Reference.doc for details.

	 Thanks are owed to Kent Polk and Jordan  Hubbard for help test-
	 ing  1.7,  to  Allen  Norskog for making his 3000 available for
	 testing  until I  managed to get an SKsh which which would more
	 or less run there, to Fred  Fish  for  continuing to provide an
	 invaluable  service  to  Amiga  users, to Tad Guy  for  posting
	 various  SKsh  versions to comp.binaries.amiga, and to everyone
	 else who provided ideas and suggestions for SKsh.





       SKsh Amiga Shell            Page 15              Addendum to 1.7









       Updating from SKsh 1.6

	 There are several difference to note between 1.6 and 1.7:

	 1)   The  return  command is now slightly different.  This  may
	      affect some old scripts which  depend on the return n syn-
	      tax  for  returning "n" nested levels.  (It  is,  however,
	      more compatible with the Un*x return command now).

	 2)   Your .skshrc file no longer should add the  directory con-
	      taining  the  SKsh  external  binaries to the search path.
	      Both  skshbin:  and  skshscr: are  included in the default
	      SKsh search path.

	 3)   You will  need  to  set  up  skshbin: and skshscr: in your
	      s:startup-sequence file.

	 4)   As  always, the new .skshinit file MUST be used.  The  .pp
	      form will be faster.  The  install script will put the new
	      .skshinit into your sksh:  directory.   Similarly, the new
	      sksh.msg   message  file  must  be  placed  in  the  sksh:
	      directory.  The install script will install this as well.


       SKsh users list

	 I am  starting to keep a list of SKsh users.  If you wish to be
	 on this list, send me your name, and  either a US-mail or email
	 address where you can be reached.  One reason for this list  is
	 just curiosity on my part of how many people  use  SKsh  (which
	 determines, in  part,  how  much  effort I will continue to put
	 into  it).   I  can't  promise there are any real advantages to
	 being on this list, although I may  occasionally use it to send
	 out news about SKsh, small patches,  or  interesting scripts or
	 functions  which  don't  make   it   into   an   official  SKsh
	 distribution.  Reply or not as you see fit.


       Notes about the size of SKsh

	 I  have  been  attempting to keep the main SKsh binary close to
	 70K bytes.   However, as I add more things, the whole SKsh dis-
	 tribution grows larger.  Even in 1.7  I  have  omitted things I
	 wished  to  include,  and  compressed other things, so that the
	 distribution  can  be  unarchived on one floppy (just  barely).
	 However,  future  versions  will  certainly be larger.  This is
	 just  a  warning that  installing future SKshs will almost cer-
	 tainly  require a hard disk or ram drive to store the distribu-
	 tion files before they are installed.

	 To save space, the files shipped in the  "misc"  directory (in-
	 cluding   Tiny_SKsh   and   the   install  script  source)  are
	 compressed.   This  was   necessary  so  that  the  SKsh017.lzh
	 archive can be extracted onto an empty floppy.


       SKsh Amiga Shell            Page 16              Addendum to 1.7

koren@hpfcdc.HP.COM (Steve Koren) (05/07/91)

> [ note: when I tried to upload SKsh017.lzh to ab20 this weekend, there
> was no free disk space.  I will upload it as soon as there is enough
> free space. - steve ]

More disk space now.  Its in /incoming/amiga/SKsh017.lzh (for now).