We help IT Professionals succeed at work.

What the purpose of /dev/tty?

224 Views
Last Modified: 2018-10-11
See: https://stackoverflow.com/questions/6170598/can-anyone-explain-to-me-what-the-purpose-of-dev-tty


You can start with the POSIX spec. From there, read about the "controlling terminal" of a process.

But just for example... /dev/tty is how a command like "ssh" can read your password even if its standard input comes from somewhere else:

tar cf - . | ssh dest 'tar xf -'

Open in new window


If ssh decides to prompt you for a password, it will read it from /dev/tty instead of stdin.

Conceptually, /dev/tty is "the keyboard and text terminal". More or less.

Let's say my "terminal-file" of the current session is /dev/pts/1. In such a case, then what's the difference between "/dev/pts/1" and "/dev/tty"? And if they are basically the same, then why  "/dev/tty" is used instead of "/dev/pts/1"?

And:

/dev/tty is how a command like "ssh" can read your password even if its standard input comes from somewhere else

Let's say the standard input comes from somewhere else, so let's say we have:

FD 0 <- file
FD 1 -> /dev/pts/1
FD 2 -> /dev/pts/1

How I see it: the fact that the standard input comes from somewhere else doesn't mean that /dev/pts/1 can not be read? The password comes from the keyboard and /dev/pts/1 represents i.a. the keyboard, right? So I still don't see what exactly the purpose is of /dev/tty?

@noci: I know you know the answer, but I don't understand your explanation so I've made this post so maybe other people can explain it to me in a way that I understand it.
Comment
Watch Question

mccarlIT Business Systems Analyst / Software Developer
CERTIFIED EXPERT
Top Expert 2015

Commented:
You can maybe just think of /dev/tty being like a link to whatever the actual terminal device is for that particular session, be it a /dev/pts/1 type of terminal, or /dev/tty1 or /dev/ttyS0, etc, etc.

So you next question then was...

Let's say the standard input comes from somewhere else, so let's say we have:

FD 0 <- file
FD 1 -> /dev/pts/1
FD 2 -> /dev/pts/1

How I see it: the fact that the standard input comes from somewhere else doesn't mean that /dev/pts/1 can not be read?

True, but how do you know that the terminal to read is /dev/pts/1 and not say, /dev/pts/5 or something. The FD 0 was redirected to the file by the shell before the program started to run, so how do you know which terminal to try and read from? You don't, but you can just read from /dev/tty and it will always be whatever FD 0 was going to be before the redirection.

Author

Commented:
Thanks a lot! That's clear to me.

Author

Commented:
Now noci just said something to me in another thread and that confuses me again ;). Let's say the shell is bash. Then I start with a bash process:

FD 0 (standard input)   <- /dev/pts/1 (terminal-file/keyboard)
FD 1 (standard output)  -> /dev/pts/1 (terminal-file/keyboard)
FD 2 (standard error)   -> /dev/pts/1 (terminal-file/keyboard)

When "less" is seen by bash, these file descriptors will be forked first right? Now you're saying:

The FD 0 was redirected to the file by the shell before the program started to run,

How I have to see this, because if less starts with a fork of the bash-process then "/dev/pts/1" is known, right?
IT Business Systems Analyst / Software Developer
CERTIFIED EXPERT
Top Expert 2015
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION

Author

Commented:
Thanks a lot! Sounds all logical, I'll go back to noci with it and then later on I'll close this question. What you're saying, totally makes sense to me. I still have to convince noci ;).

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions