{
    "mode": "man",
    "parameter": "expect_kibitz",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/expect_kibitz/1/json",
    "generated": "2026-05-30T06:07:19Z",
    "synopsis": "kibitz [ kibitz-args ] user [ program program-args...  ]\nkibitz [ kibitz-args ] user@host [ program program-args...  ]",
    "sections": {
        "NAME": {
            "content": "kibitz - allow two people to interact with one shell\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "kibitz [ kibitz-args ] user [ program program-args...  ]\nkibitz [ kibitz-args ] user@host [ program program-args...  ]\n",
            "subsections": []
        },
        "INTRODUCTION": {
            "content": "kibitz  allows  two  (or  more) people to interact with one shell (or any arbitrary program).\nUses include:\n\n•   A novice user can ask an expert user for help.  Using kibitz, the expert  can  see\nwhat the user is doing, and offer advice or show how to do it right.\n\n•   By  running  kibitz and then starting a full-screen editor, people may carry out a\nconversation, retaining the ability to scroll backwards, save the entire conversa‐\ntion, or even edit it while in progress.\n\n•   People  can  team  up on games, document editing, or other cooperative tasks where\neach person has strengths and weaknesses that complement one another.\n",
            "subsections": []
        },
        "USAGE": {
            "content": "To start kibitz, user1 runs kibitz with the argument of the user to kibitz.  For example:\n\nkibitz user2\n\nkibitz starts a new shell (or another program, if given on the command line), while prompting\nuser2  to  run kibitz.  If user2 runs kibitz as directed, the keystrokes of both users become\nthe input of the shell.  Similarly, both users receive the output from the shell.\n\nTo terminate kibitz it suffices to terminate the shell itself.  For example, if  either  user\ntypes ^D (and the shell accepts this to be EOF), the shell terminates followed by kibitz.\n\nNormally,  all  characters  are  passed uninterpreted.  However, if the escape character (de‐\nscribed when kibitz starts) is issued, the user may talk directly to the kibitz  interpreter.\nAny  Expect(1)  or  Tcl(3) commands may be given.  Also, job control may be used while in the\ninterpreter, to, for example, suspend or restart kibitz.\n\nVarious processes can provide various effects.   For  example,  you  can  emulate  a  two-way\nwrite(1) session with the command:\n\nkibitz user2 sleep 1000000\n",
            "subsections": []
        },
        "ARGUMENTS": {
            "content": "kibitz takes arguments, these should also be separated by whitespace.\n\nThe  -noproc flag runs kibitz with no process underneath.  Characters are passed to the other\nkibitz.  This is particularly useful for connecting multiple interactive processes  together.\nIn this mode, characters are not echoed back to the typist.\n",
            "subsections": [
                {
                    "name": "-noescape",
                    "content": ""
                },
                {
                    "name": "-escape",
                    "content": ""
                },
                {
                    "name": "-silent",
                    "content": "nection.\n"
                },
                {
                    "name": "-tty",
                    "content": "If you start kibitz to user2 on a remote computer, kibitz performs a  rlogin  to  the  remote\ncomputer  with  your current username. The flag -proxy username causes rlogin to use username\nfor the remote login (e.g. if your account on the remote computer has a different  username).\nIf  the -proxy flag is not given, kibitz tries to determine your current username by (in that\norder) inspecting the environment variables USER and LOGNAME,  then  by  using  the  commands\nwhoami and logname.\n\nThe arguments -noescape and -escape can also be given by user2 when prompted to run kibitz.\n\n"
                }
            ]
        },
        "MORE THAN TWO USERS": {
            "content": "The  current  implementation  of kibitz explicitly understands only two users, however, it is\nnonetheless possible to have a three (or more) -way kibitz, by kibitzing another kibitz.  For\nexample, the following command runs kibitz with the current user, user2, and user3:\n\n% kibitz user2 kibitz user3\n\nAdditional users may be added by simply appending more \"kibitz user\" commands.\n\nThe xkibitz script is similar to kibitz but supports the ability to add additional users (and\ndrop them) dynamically.\n",
            "subsections": []
        },
        "CAVEATS": {
            "content": "kibitz assumes the 2nd user has the same terminal type and size as the 1st user.  If this as‐\nsumption is incorrect, graphical programs may display oddly.\n\nkibitz handles character graphics, but cannot handle bitmapped graphics.  Thus,\n\n% xterm -e kibitz    will work\n% kibitz xterm       will not work\n\nHowever,  you can get the effect of the latter command by using xkibitz (see SEE ALSO below).\nkibitz uses the same permissions as used by rlogin, rsh, etc.  Thus, you can only  kibitz  to\nusers at hosts for which you can rlogin.  Similarly, kibitz will prompt for a password on the\nremote host if rlogin would.\n\nIf you kibitz to users at remote hosts, kibitz needs to distinguish your  prompt  from  other\nthings  that  may precede it during login.  (Ideally, the end of it is preferred but any part\nshould suffice.)  If you have an unusual prompt, set the environment  variable  EXPECTPROMPT\nto  an  egrep(1)-style regular expression.  Brackets should be preceded with one backslash in\nranges, and three backslashes for literal brackets.  The default prompt r.e. is \"($|%|#) \".\n\nkibitz requires the kibitz program on both hosts.  kibitz requires expect(1).\n\nBy comparison, the xkibitz script uses the X authorization mechanism for inter-host  communi‐\ncation  so  it does not need to login, recognize your prompt, or require kibitz on the remote\nhost.  It does however need permission to access the other X servers.\n",
            "subsections": []
        },
        "BUGS": {
            "content": "An early version of Sun's tmpfs had a bug in it that causes kibitz to blow up.  If kibitz re‐\nports \"error flushing ...: Is a directory\" ask Sun for patch #100174.\n\nIf your Expect is not compiled with multiple-process support (i.e., you do not have a working\nselect or poll), you will not be able to run kibitz.\n",
            "subsections": []
        },
        "ENVIRONMENT": {
            "content": "The environment variable SHELL is used to determine the shell to start, if no  other  program\nis given on the command line.\n\nIf  the  environment variable EXPECTPROMPT exists, it is taken as a regular expression which\nmatches the end of your login prompt (but does not otherwise occur  while  logging  in).  See\nalso CAVEATS above.\n\nIf the environment variables USER or LOGNAME are defined, they are used to determine the cur‐\nrent user name for a kibitz to a remote computer. See description of the -proxy option in AR‐\nGUMENTS above.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "Tcl(3), libexpect(3), xkibitz(1)\n\"Exploring  Expect:  A  Tcl-Based  Toolkit for Automating Interactive Programs\" by Don Libes,\nO'Reilly and Associates, January 1995.\n\"Kibitz - Connecting Multiple Interactive Programs Together\", by Don Libes, Software -  Prac‐\ntice & Experience, John Wiley & Sons, West Sussex, England, Vol. 23, No. 5, May, 1993.\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Don Libes, National Institute of Standards and Technology\n\nkibitz  is in the public domain.  NIST and I would appreciate credit if this program or parts\nof it are used.\n\n\n\n19 October 1994                                 KIBITZ(1)",
            "subsections": []
        }
    },
    "summary": "kibitz - allow two people to interact with one shell",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "Tcl",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/Tcl/3/json"
        },
        {
            "name": "libexpect",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/libexpect/3/json"
        },
        {
            "name": "xkibitz",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/xkibitz/1/json"
        }
    ]
}