Annotation of lucent/sys/man/1/0intro, revision 1.1.1.1

1.1       root        1: .TH INTRO 1
                      2: .SH NAME
                      3: intro \- introduction to Plan 9
                      4: .SH DESCRIPTION
                      5: Plan 9 is a distributed computing environment assembled from
                      6: separate machines acting as terminals,
                      7: CPU servers, and file servers.
                      8: A user works at a terminal, running a window system on a bitmapped display.
                      9: Some windows are connected to CPU servers; the intent is that heavy computing
                     10: should be done in those windows but it is also possible to compute on the terminal.
                     11: A separate file server provides file storage for terminals and
                     12: CPU servers alike.
                     13: .SS Name Spaces
                     14: In Plan 9, almost all objects look like files.
                     15: The object retrieved by a given name is determined by a mapping called the
                     16: .I name space.
                     17: A quick tour of the standard name space is in
                     18: .IR namespace (4).
                     19: Every program running in Plan 9 belongs to a
                     20: .I process group
                     21: (see
                     22: .I rfork
                     23: in
                     24: .IR fork (2)),
                     25: and the name space for each process group can be independently
                     26: customized.
                     27: .PP
                     28: A name space is hierarchically structured.
                     29: A full file name (also called a
                     30: .IR "full path name" )
                     31: has the form
                     32: .IP
                     33: .RI / e1 / e2 /.../ en
                     34: .PP
                     35: This represents an object in a tree of files: the tree has a root,
                     36: represented by the first
                     37: .LR / ;
                     38: the root has a child file named
                     39: .IR e1 ,
                     40: which in turn has child
                     41: .IR e2 ,
                     42: and so on; the descendent
                     43: .I en
                     44: is the object represented by the path name.
                     45: .PP
                     46: There are a number of Plan 9
                     47: .I services
                     48: available, each of which provides a tree of files.
                     49: A name space is built by
                     50: .I binding
                     51: services (or subtrees of services) to names in the name-space-so-far.
                     52: Typically, a user's home file server is bound to the root of the name space,
                     53: and other services are bound to conventionally named subdirectories.
                     54: For example, there is a service resident in the operating system for accessing
                     55: hardware devices and that is bound to
                     56: .B /dev
                     57: by convention.
                     58: Kernel services have names (outside the name space) that are a
                     59: .L #
                     60: sign followed by a single letter;
                     61: for example,
                     62: .B #c
                     63: is conventionally bound to
                     64: .BR /dev .
                     65: .PP
                     66: Plan 9 has
                     67: .IR "union directories" :
                     68: directories made of several directories all bound to the
                     69: same name.
                     70: The directories making up a union directory are ordered in a list.
                     71: When the bindings are made
                     72: (see
                     73: .IR bind (1)),
                     74: flags specify whether a newly bound member goes at the head or the tail of the list
                     75: or completely replaces the list.
                     76: To look up a name in a union directory, each member directory is searched
                     77: in list order until the name is found.
                     78: A bind
                     79: flag specifies whether file creation is allowed in a member directory:
                     80: a file created in the union directory goes in
                     81: the first member directory in list order that allows creation, if any.
                     82: .PP
                     83: The glue that holds Plan 9 together is a network protocol called
                     84: .IR 9P ,
                     85: described in section 5 of this manual.
                     86: All Plan 9 servers read and respond to 9P requests to navigate through
                     87: a file tree and to perform operations such as reading and writing
                     88: files within the tree.
                     89: .SS Booting
                     90: When a terminal is powered on or reset,
                     91: it must be told the name of a file server to boot from,
                     92: the operating system kernel to boot,
                     93: and a user name and password.
                     94: How this dialog proceeds is environment- and machine-dependent.
                     95: Once it is complete,
                     96: the terminal loads a Plan 9 kernel,
                     97: which sets some environment variables (see
                     98: .IR env (3))
                     99: and builds an initial name space.
                    100: See
                    101: .IR namespace (4),
                    102: .IR boot (8),
                    103: and
                    104: .IR init (8)
                    105: for details, but some important aspects of the initial name space are:
                    106: .IP \(bu
                    107: The environment variable
                    108: .B $cputype
                    109: is set to the name of the kernel's CPU's architecture: one of
                    110: .BR 68020 ,
                    111: .BR mips ,
                    112: .BR sparc ,
                    113: or
                    114: .BR 386 .
                    115: The environment variable
                    116: .B $objtype
                    117: is initially the same as
                    118: .BR $cputype .
                    119: .IP \(bu
                    120: The environment variable
                    121: .B $terminal
                    122: is set to the model of the machine running the kernel: e.g.,
                    123: .BR "mips magnum 3000" .
                    124: .IP \(bu
                    125: The environment variable
                    126: .B $service
                    127: is set to
                    128: .BR terminal .
                    129: (Other ways of accessing Plan 9 may set
                    130: .B $service
                    131: to one of
                    132: .BR cpu ,
                    133: .BR con ,
                    134: or
                    135: .BR rx .)
                    136: .IP \(bu
                    137: The environment variable
                    138: .B $user
                    139: is set to the name of the user who booted the terminal.
                    140: The environment variable
                    141: .B $home
                    142: is set to that user's home directory.
                    143: .IP \(bu
                    144: .B /$cputype/bin
                    145: and
                    146: .B /rc/bin
                    147: are unioned into
                    148: .BR /bin .
                    149: .PD
                    150: .PP
                    151: After booting, the terminal runs the command interpreter,
                    152: .IR rc (1),
                    153: on
                    154: .B /usr/$user/lib/profile
                    155: after moving to the user's home directory.
                    156: .PP
                    157: Here is a typical profile:
                    158: .IP
                    159: .EX
                    160: bind -c $home/tmp /tmp
                    161: bind -a $home/bin/rc /bin
                    162: bind -a $home/bin/$cputype /bin
                    163: font = /lib/font/bit/pelm/euro.9.font
                    164: switch($service){
                    165: case terminal
                    166:        prompt=('term% ' '      ')
                    167:        exec 8½ -f $font
                    168: case cpu
                    169:        bind -b /mnt/term/mnt/8½ /dev
                    170:        prompt=('cpu% ' '       ')
                    171:        news
                    172: case con
                    173:        prompt=('cpu% ' '       ')
                    174:        news
                    175: }
                    176: .EE
                    177: .PD
                    178: .PP
                    179: The first three lines replace
                    180: .B /tmp
                    181: with a
                    182: .B tmp
                    183: in the user's home directory
                    184: and union personal
                    185: .B bin
                    186: directories with
                    187: .BR /bin ,
                    188: to be searched after the standard
                    189: .B bin
                    190: directories.
                    191: Then different things happen, depending on the
                    192: .B $service
                    193: environment variable,
                    194: such as running the window system
                    195: .IR 8½ (1)
                    196: on a terminal.
                    197: .PP
                    198: To do heavy work such as compiling, the
                    199: .IR cpu (1)
                    200: command connects a window to a CPU server;
                    201: the same environment variables are set (to different values)
                    202: and the same profile is run.
                    203: The initial directory is the current directory in the terminal window
                    204: where
                    205: .I cpu
                    206: was typed.
                    207: The value of
                    208: .B $service
                    209: will be
                    210: .BR cpu ,
                    211: so the second arm of the profile switch is executed.
                    212: The root of the terminal's name space is accessible through
                    213: .BR /mnt/term ,
                    214: so the
                    215: .I bind
                    216: is a way of making the window system's graphics interface (see
                    217: .IR bit (3))
                    218: available to programs running on the CPU server.
                    219: The
                    220: .IR news (1)
                    221: command reports current Plan 9 affairs.
                    222: .PP
                    223: The third possible service type,
                    224: .BR con ,
                    225: is set when the CPU server is called from a non-Plan-9 machine,
                    226: such as through
                    227: .I telnet
                    228: (see
                    229: .IR con (1)).
                    230: .SS Using Plan 9
                    231: The user commands of Plan 9 are reminiscent of those in Research Unix, version 10;
                    232: the window system is a lot like
                    233: .IR mux .
                    234: There are a number of differences, however.
                    235: .PP
                    236: The standard shell is
                    237: .IR rc (1),
                    238: not the Bourne shell.
                    239: The most noticeable differences appear only when programming and macro processing.
                    240: .PP
                    241: The character-delete character is backspace, and the line-kill character is
                    242: control-U; these cannot be changed.
                    243: .PP
                    244: DEL is the interrupt character: typing it sends an interrupt to processes running in that window.
                    245: See
                    246: .IR keyboard (6)
                    247: for instructions on typing characters like DEL on the various keyboards.
                    248: .PP
                    249: If a program dies with something like an address error, it enters a `Broken'
                    250: state.  It lingers, available for debugging with
                    251: .IR db (1)
                    252: or
                    253: .IR acid (1).
                    254: .I Broke
                    255: (see
                    256: .IR kill (1))
                    257: cleans up broken processes.
                    258: .PP
                    259: The standard editor is
                    260: .IR sam (1).
                    261: There is a variant that permits running the file-manipulating part of
                    262: .I sam
                    263: on a non-Plan-9 system:
                    264: .IP
                    265: .EX
                    266: sam -r tcp!kremvax
                    267: .EE
                    268: .PP
                    269: Machine names may be prefixed by the network name,
                    270: here
                    271: .BR tcp ;
                    272: others include
                    273: .B dk
                    274: for Datakit and
                    275: .B il
                    276: for the Plan 9 Internet protocol.
                    277: .PP
                    278: Login connections and remote execution on non-Plan-9 machines are usually
                    279: done by saying, for example,
                    280: .IP
                    281: .EX
                    282: con kremvax
                    283: .EE
                    284: .PP
                    285: or
                    286: .IP
                    287: .EX
                    288: rx deepthought chess
                    289: .EE
                    290: .PP
                    291: (see
                    292: .IR con (1)).
                    293: .PP
                    294: .I 9fs 
                    295: connects to file systems of remote systems
                    296: (see
                    297: .IR srv (4)).
                    298: For example,
                    299: .IP
                    300: .EX
                    301: 9fs kremvax
                    302: .EE
                    303: .PP
                    304: sets things up so that the root of
                    305: .BR kremvax 's
                    306: file tree is visible locally in
                    307: .BR /n/kremvax .
                    308: .PP
                    309: .I Seemail
                    310: gives graphical notification of arriving mail
                    311: (see
                    312: .IR mail (1));
                    313: if your mail arrives elsewhere, use
                    314: .IR vismon :
                    315: .IP
                    316: .EX
                    317: vismon tcp!kremvax
                    318: .EE
                    319: .PP
                    320: The Plan 9 file server has an integrated backup facility.
                    321: The command
                    322: .IP
                    323: .EX
                    324: 9fs dump
                    325: .EE
                    326: .PP
                    327: binds to
                    328: .B /n/dump
                    329: a tree containing the daily backups on the file server.
                    330: The dump tree has years as top level file names, and month-day
                    331: as next level file names.
                    332: For example,
                    333: .B /n/dump/1990/0120
                    334: is the root of the file system as it appeared at dump time on
                    335: January 20, 1990.
                    336: If more than one dump is taken on the same day, dumps after
                    337: the first have an extra digit.
                    338: To recover the version of this file as it was on June 15, 1991,
                    339: .IP
                    340: .EX
                    341: cp /n/dump/1991/0615/sys/man/man1/Intro.1 .
                    342: .EE
                    343: .PP
                    344: or use
                    345: .IR yesterday (1).
                    346: .SH SEE ALSO
                    347: This section for general publicly accessible commands.
                    348: .br
                    349: Section (2) for library functions, including system calls.
                    350: .br
                    351: Section (3) for kernel devices (accessed via
                    352: .IR bind (1)).
                    353: .br
                    354: Section (4) for file services (accessed via
                    355: .IR mount ).
                    356: .br
                    357: Section (5) for the Plan 9 file protocol.
                    358: .br
                    359: Section (6) for file formats.
                    360: .br
                    361: Section (7) for databases and database access programs.
                    362: .br
                    363: Section (8) for things related to administering Plan 9.
                    364: .br
                    365: Section (9) for raster image software.
                    366: .br
                    367: .B /sys/doc
                    368: for copies of papers referenced in this manual.
                    369: .PP
                    370: The back of this volume has a permuted index to aid searches.
                    371: .SH DIAGNOSTICS
                    372: Upon termination each program returns a string called the
                    373: .IR "exit status" .
                    374: It was either supplied by a call to
                    375: .IR exits (2)
                    376: or was written to the command's
                    377: .BI /proc/ pid /note
                    378: file
                    379: (see
                    380: .IR proc (3)),
                    381: causing an abnormal termination.
                    382: The empty string is customary for successful execution;
                    383: a non-empty string gives a clue to the failure of the command.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.