man pages section 1: User Commands

Exit Print View

Updated: July 2014

kibitz (1)


kibitz - allow two people to interact with one shell


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


User Commands                                           KIBITZ(1)

     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:

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

          o   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

          o   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,

SunOS 5.11         Last change: 19 October 1994                 1

User Commands                                           KIBITZ(1)

     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

     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  LOGNAME, 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 cur-
     rent user, user2, and user3:

          % kibitz user2 kibitz user3

     Additional users may be added by simply appending more "kib-
     itz user" commands.

     The xkibitz script is similar to  kibitz  but  supports  the

SunOS 5.11         Last change: 19 October 1994                 2

User Commands                                           KIBITZ(1)

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

SunOS 5.11         Last change: 19 October 1994                 3

User Commands                                           KIBITZ(1)

     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  kib-
     itz  to  a  remote  computer.  See description of the -proxy
     option in ARGUMENTS above.

     See  attributes(5)  for  descriptions   of   the   following

     |Availability   | shell/expect     |
     |Stability      | Uncommitted      |
     Tcl(3), libexpect(3), xkibitz(1)
     "Exploring Expect: A Tcl-Based Toolkit for Automating Inter-
     active Programs" by Don Libes, O'Reilly and Associates, Jan-
     uary 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.

     This   software   was   built   from   source  available  at   The   original
     community   source   was   downloaded  from   http://source-

     Further  information about this software can be found on the
     open source community website at

SunOS 5.11         Last change: 19 October 1994                 4