NAME                                                    EQUALS(I)
     = (equals)	- shell	assignment command

SYNOPSIS
     = letter [	arg1 [ arg2 ] ]

DESCRIPTION
     The ``='' command provides	shell string variables.	  The  26
     letter  variables (`a'-`z') are referenced	in later commands
     in	the manner of shell arguments, i.e.:  $a, ..., $z. If  no
     arguments	are  given, the	standard input is read to newline
     or	EOT for	the value.  The	exit code is set to 0 if  a  new-
     line  is  found in	the input; it is set to	1 otherwise, thus
     providing and end-of-file indicator.  If arg1  is	the  only
     argument,	or if two non-null arguments are given,	the vari-
     able is set to arg1, and the exit code set	 to  0.	  If  two
     arguments are given, and if arg1 is a null	string,	the value
     of	arg2 is	assigned to the	variable, and the  exit	 code  is
     set to 1, permitting a convenient default mechanism:

	  = a "$1" "default value" && shift

     The ``='' command works either at the terminal, or	in  shell
     command  files.   The  variables can be assigned repeatedly.
     Storage is	assigned as needed, but	there is no recovery.

     Some letter variables have	predefined meanings and	are  ini-
     tialized once at the time the Shell begins	execution:

     $n	  The argument count.  ``sh file arg1 arg2 arg3'' has the
     value 3.  The shift command does not change the value of $n.

     $p	  This variable	holds the shell	search sequence	of  path-
     name  prefixes  for  command  execution.	Alternatives  are
     separated by ``:''.  The default initial value is:

	       = p ":/bin:/usr/bin"

     which prepends successively
	       the null	pathname (execute from current dir.),
	       /bin,
	       /usr/bin.

     Using the same type of specification, users may choose their
     own  sequence  by	storing	 it  in	a file named ``.path'' in
     their login directory.  The ``.path'' information passes  to
     successive	 shells	 (and  other  commands	like  time(I)  or
     nohup(I));	the $p value does not.	In any case, no	 prepend-
     ing occurs	when a command name contains a `/'.

     $r	  exit(status) of the most recent command executed by the
     Shell.   The  value  is ASCII numeric, and	is initially `0'.
     At	end-of-file the	shell exits with the value of $r.

     $s	  Name of login	(starting) directory.

     $t	  Terminal identification letter or  number:   /dev/tty$t
     is	a file name for	the terminal.

     $w	  First	component in $s	pathname, i.e.,	file system  name
     (such as /usr).

     $z	  Is the  name	of  the	 Shell.	  Its  default	value  is
     `/bin/sh',	but this can be	overridden by supplying	a name as
     the second	line of	the `.path' file.

     Note that variables (`a' -	`m') are guaranteed  to	 be  ini-
     tialized  to  null	 strings  and  usable in any way desired.
     Variables (`n' -  `z')  may  acquire  special  uses  in  the
     future.   The values of $n, $s, $t, and $w	may reasonably be
     modified; it is catastrophic to change $p;	it  is	possible,
     but useless to modify $r.

     The command is executed within the	shell.	Note that  it  is
     commonly  used  to	read the first line of output from a pipe
     or	a line from the	terminal, for example:

	  grep -c string file |	= a
     or:
	  = a </dev/tty

EXIT CODES
     0 - normal	read, or first of two arguments	is not null.
     1 - end-of-file, or first of two arguments	is null.

SEE ALSO
     expr(I), sh(I)