What is a tty, and how do I access a tty?

I keep hearing about these things known as tty's.

  • what are they

  • how can I access them

  • what do they do?


tty is one of those funky Unix commands that prints the name of the terminal connected to standard input.

TTY's are text-only terminals commonly used as a way to get access to the computer to fix things, without actually logging into a possibly b0rked desktop.

Related: What is tty7 in the commandline?

By default Ubuntu has 7 tty's.

  • Up until Ubuntu 17.10, 1-6 are command line only and 7 runs your X session (your normal desktop).
  • On Ubuntu 17.10 and newer, it's GUI login screen on 1, GUI desktop on 2 and command lines on 3-7.

To access them, use this keyboard shortcut:

Ctrl + Alt + F1 (or F3 on 17.10 and newer)

(changing F1 to F1-F6 to access the terminal that you want)

To get back to your GUI session (the normal desktop):

Ctrl + Alt + F7 (or F2 on 17.10 and newer)


A tty, short for teletype and perhaps more commonly called a terminal, is a device which lets you interact with the system by sending and receiving data, such as commands and the output they produce.

There are many kind of ttys, but nowadays most ttys are implemented in software, such as the graphical consoles you can access with Ctrl+Alt+Fn, or terminal emulators such as Gnome terminal that run inside an X session.

There is also a tty command, which shows the device node of the terminal in which it is running (or prints "not a tty" if it is not running inside a terminal; yes, it is possible to run commands outside a terminal). For example:

firas@itsuki ~ % tty
/dev/pts/0
firas@itsuki ~ % ssh localhost tty
not a tty

When I am logged in and running a shell on the machine, the shell is normally running inside a terminal, namely here it is /dev/pts/0. However, when I run ssh host command to run a command on a remote host, the command is not run inside a terminal.


You can change the displayed TTY by commmand line with chvt (requires sudo privileges), from SSH for example. Here is the relevant part of the manpage (man chvt):

CHVT(1)

NAME

chvt - change foreground virtual terminal

SYNOPSIS

chvt N

DESCRIPTION

The command chvt N makes /dev/ttyN the foreground terminal. (The corresponding screen is created if it did not exist yet. To get rid of unused VTs, use deallocvt) The key combination (Ctrl-)LeftAlt-FN (with N in the range 1-12) usually has a similar effect.