About Us Documentation

Contact Site Map




KIBITZ(1)                USER COMMANDS            19 October 1994


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 pro-

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


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 shell.

     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  inter-
     preter.   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:

ReadyPak                                                        1

KIBITZ(1)                USER COMMANDS            19 October 1994

          kibitz user2 sleep 1000000


kibitz takes arguments, these should also  be  separated  by

     The -noproc flag runs kibitz  with  no  process  underneath.
     Characters are passed to the other kibitz.  This is particu-
     larly 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 connection.

     -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 vari-
     ables  USER  and  LOG


, then by using the commands whoami
     and logname.

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


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.

ReadyPak                                                        2

KIBITZ(1)                USER COMMANDS            19 October 1994


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  bit-
     mapped 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  


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.  Simi-
     larly, kibitz will prompt for a password on the remote  host
     if rlogin would.

     If you kibitz to users at remote hosts, kibitz needs to dis-
     tinguish  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 reg-
     ular  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

     If the environment  variable  EXPECT_PROMPT  exists,  it  is
     taken  as a regular expression which matches the end of your

ReadyPak                                                        3

KIBITZ(1)                USER COMMANDS            19 October 1994

     login prompt (but does not  otherwise  occur  while  logging
     in). See also CAVEATS above.

     If the environment variables USER or  LOG


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 




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.

ReadyPak                                                        4

Prepared by Ready-to-Run Software, Inc. 

To return to the Ready-to-Run Software Super ReadyPak Table of contents please presshere


Email addresses listed on this site may  NOT be used for unsolicited commercial email.

Ready-to-Run Software, Inc Privacy Statement

Portions (c)Copyright, 1996-2005 by Ready-to-Run Software, Inc
(All rights reserved.)
212 Cedar Cove
Lansing, NY 14882
Phone: 607 533 UNIX (8649)
Fax: 607 533 4002