---
name: "openvt"
section: "1"
platform: "linux"
package: "kbd"
version: "2.10.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/openvt"
---

# openvt(1)

start a program on a new virtual terminal (VT).

## NAME

openvt - start a program on a new virtual terminal (VT).

## SYNOPSIS

**openvt** \[-c vtnumber\] \[OPTIONS\] \[--\] command

## DESCRIPTION

**openvt** will find the first available VT, and run on it the given **command** with the given **command options ,** standard input, output and error are directed to that terminal. The current search path ($PATH) is used to find the requested command. If no command is specified then the environment variable $SHELL is used.

### OPTIONS

- **-c**, **--console**=*VTNUMBER*

  Use the given VT number and not the first available. Note you must have write access to the supplied VT for this to work.

- **-f**, **--force**

  Force opening a VT without checking whether it is already in use.

- **-e**, **--exec**

  Directly execute the given command, without forking. This option is meant for use in */etc/inittab*.

- **-s**, **--switch**

  Switch to the new VT when starting the command. The VT of the new command will be made the new current VT.

- **-u**, **--user**

  Figure out the owner of the current VT, and run login as that user. Suitable to be called by init. Shouldn't be used with *-c* or *-l*. This option refuses to pre-authenticate root and requires a process owned by the VT owner whose controlling terminal is the current VT.

- **-l**, **--login**

  Make the command a login shell. A - is prepended to the name of the command to be executed.

- **-v**, **--verbose**

  Be a bit more verbose.

- **-w**, **--wait**

  wait for command to complete. If -w and -s are used together then **openvt** will switch back to the controlling terminal when the command completes.

- **-V**, **--version**

  print program version and exit.

- **-h**, **--help**

  show this text and exit.

- **--**

  end of options to **openvt**.

## NOTE

If **openvt** is compiled with a getopt\_long() and you wish to set options to the command to be run, then you must supply the end of options -- flag before the command.

The **-u** option uses **login -f** and therefore bypasses normal password authentication for the detected user. It is intended only for controlled init or keyboard-request configurations. Use a normal authenticated login command when authentication is required.

## EXAMPLES

**openvt** can be used to start a shell on the next free VT, by using the command:

- *openvt bash*

  - To start the shell as a login shell, use:

  - *openvt -l bash*

  - To get a long listing you must supply the -- separator:

  - *openvt -- ls -l*

  ## HISTORY

Earlier, **openvt** was called **open**. It was written by Jon Tombs \<jon@gtex02.us.es\> or \<jon@robots.ox.ac.uk\>. The *-w* idea is from "sam".

## SEE ALSO

[**chvt**(1)](/chvt/1.md), [**deallocvt**(1)](/deallocvt/1.md), [**vlock**(1)](/vlock/1.md), [**login**(1)](/login/1.md)
