Provided by: expect-dev_5.45-2_amd64 bug


       kibitz - allow two people to interact with one shell


       kibitz [ kibitz-args ] user [ program program-args...  ]
       kibitz [ kibitz-args ] user@host [ program program-args...  ]


       kibitz  allows two (or more) people to interact with one shell (or any arbitrary program).
       Uses include:

              ·   A novice user can ask an expert user for help.  Using kibitz,  the  expert  can
                  see what the user is doing, and offer advice or show how to do it right.

              ·   By  running kibitz and then starting a full-screen editor, people may carry out
                  a conversation, retaining the ability to  scroll  backwards,  save  the  entire
                  conversation, or even edit it while in progress.

              ·   People can team up on games, document editing, or other cooperative tasks where
                  each person has strengths and weaknesses that complement one another.


       To start kibitz, user1 runs kibitz with the argument of the user to kibitz.  For example:

            kibitz user2

       kibitz starts a new shell (or another program,  if  given  on  the  command  line),  while
       prompting  user2  to run kibitz.  If user2 runs kibitz as directed, the keystrokes of both
       users become the input of the shell.  Similarly, both users receive the  output  from  the

       To  terminate  kibitz  it  suffices to terminate the shell itself.  For example, if either
       user types ^D (and the shell accepts this to be EOF), the  shell  terminates  followed  by

       Normally,  all  characters  are  passed  uninterpreted.   However, if the escape character
       (described when kibitz starts) is issued,  the  user  may  talk  directly  to  the  kibitz
       interpreter.   Any  Expect(1)  or  Tcl(3) commands may be given.  Also, job control may be
       used while in the interpreter, to, for example, suspend or restart kibitz.

       Various processes can provide various effects.  For example, you  can  emulate  a  two-way
       write(1) session with the command:

            kibitz user2 sleep 1000000


       kibitz takes arguments, these should also be separated by whitespace.

       The  -noproc  flag  runs  kibitz with no process underneath.  Characters are passed to the
       other kibitz.  This is particularly useful for connecting multiple  interactive  processes
       together.  In this mode, characters are not echoed back to the typist.

       -noescape disables the escape character.

       -escape char sets the escape character.  The default escape character is ^].

       -silent  turns  off  informational  messages describing what kibitz is doing to initiate a

       -tty ttyname defines the tty to which the invitation should be sent.

       If you start kibitz to user2 on a remote computer, kibitz performs a rlogin to the  remote
       computer  with  your  current  username.  The  flag  -proxy  username causes rlogin to use
       username for the remote login (e.g. if your account on the remote computer has a different
       username).  If  the  -proxy  flag  is  not  given,  kibitz tries to determine your current
       username by (in that order) inspecting the environment variables USER and LOGNAME, then by
       using the commands whoami and logname.

       The  arguments  -noescape  and  -escape  can  also  be given by user2 when prompted to run


       The current implementation of kibitz explicitly understands only two users, however, it is
       nonetheless  possible  to have a three (or more) -way kibitz, by kibitzing another kibitz.
       For example, the following command runs kibitz with the current user, user2, and user3:

            % kibitz user2 kibitz user3

       Additional users may be added by simply appending more "kibitz user" commands.

       The xkibitz script is similar to kibitz but supports the ability to add  additional  users
       (and drop them) dynamically.


       kibitz  assumes the 2nd user has the same terminal type and size as the 1st user.  If this
       assumption is incorrect, graphical programs may display oddly.

       kibitz handles character graphics, but cannot handle bitmapped graphics.  Thus,

            % xterm -e kibitz    will work
            % kibitz xterm       will not work

       However, you can get the effect of the latter command  by  using  xkibitz  (see  SEE  ALSO
       below).  kibitz uses the same permissions as used by rlogin, rsh, etc.  Thus, you can only
       kibitz to users at hosts for which you can rlogin.  Similarly, kibitz will  prompt  for  a
       password on the remote host if rlogin would.

       If you kibitz to users at remote hosts, kibitz needs to distinguish your prompt from other
       things that may precede it during login.  (Ideally, the end of it  is  preferred  but  any
       part  should  suffice.)   If  you  have  an  unusual  prompt, set the environment variable
       EXPECT_PROMPT to an egrep(1)-style regular expression.  Brackets should be  preceded  with
       one  backslash  in ranges, and three backslashes for literal brackets.  The default prompt
       r.e. is "($|%|#) ".

       kibitz requires the kibitz program on both hosts.  kibitz requires expect(1).

       By comparison, the xkibitz script  uses  the  X  authorization  mechanism  for  inter-host
       communication  so  it  does not need to login, recognize your prompt, or require kibitz on
       the remote host.  It does however need permission to access the other X servers.


       An early version of Sun's tmpfs had a bug in it that causes kibitz to blow up.  If  kibitz
       reports "error flushing ...: Is a directory" ask Sun for patch #100174.

       If  your  Expect  is  not  compiled with multiple-process support (i.e., you do not have a
       working select or poll), you will not be able to run kibitz.


       The environment variable SHELL is used to determine  the  shell  to  start,  if  no  other
       program is given on the command line.

       If  the  environment  variable  EXPECT_PROMPT  exists, it is taken as a regular expression
       which matches the end of your login prompt (but does not  otherwise  occur  while  logging
       in). See also CAVEATS above.

       If  the  environment variables USER or LOGNAME are defined, they are used to determine the
       current user name for a kibitz to a remote computer. See description of the -proxy  option
       in ARGUMENTS above.


       Tcl(3), libexpect(3), xkibitz(1)
       "Exploring  Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don Libes,
       O'Reilly and Associates, January 1995.
       "Kibitz - Connecting Multiple Interactive Programs Together", by  Don  Libes,  Software  -
       Practice & Experience, John Wiley & Sons, West Sussex, England, Vol. 23, No. 5, May, 1993.


       Don Libes, National Institute of Standards and Technology

       kibitz  is  in  the  public domain.  NIST and I would appreciate credit if this program or
       parts of it are used.

                                         19 October 1994                                KIBITZ(1)