#### 21.2.54 *terminal-io* [Variable]

#### Value Type::

a bidirectional stream.

#### Initial Value::

implementation-dependent, but it must be an open stream that is not a generalized synonym stream to an I/O customization variables but that might be a generalized synonym stream to the value of some I/O customization variable.

#### Description::

The value of *terminal-io*, called terminal I/O, is ordinarily a bidirectional stream that connects to the user’s console. Typically, writing to this stream would cause the output to appear on a display screen, for example, and reading from the stream would accept input from a keyboard. It is intended that standard input functions such as read and read-char, when used with this stream, cause echoing of the input into the output side of the stream. The means by which this is accomplished are implementation-dependent.

The effect of changing the value of *terminal-io*, either by binding or assignment, is implementation-defined.

#### Examples::

     (progn (prin1 'foo) (prin1 'bar *terminal-io*))
     |>  FOOBAR
    ⇒  BAR
     (with-output-to-string (*standard-output*)
       (prin1 'foo)
       (prin1 'bar *terminal-io*))
     |>  BAR
    ⇒  "FOO"

#### See Also::

*debug-io*, *error-output*, *query-io*, *standard-input*, *standard-output*, *trace-output*