There is a sentence in the post below.
Difference between Login Shell and Non-Login Shell?
The focus is here:
Another way to get a non-interactive login shell is to log in remotely with a command passed through standard input which is not a terminal, e.g.
ssh example.com <my-script-which-is-stored-locally
(as opposed to ssh example.com my-script-which-is-on-the-remote-machine
, which runs a non-interactive, non-login shell).
The author arrive at two conclusions from the desciption above.
-
non-interactive login shell
ssh example.com <my-script-which-is-stored-locally
-
non-interactive, non-login shell
ssh example.com my-script-which-is-on-the-remote-machine
I don't think the second conlusion is right.
When to execute ssh example.com my-script-which-is-on-the-remote-machine
,account name and password still be asked to input locally.
It is still a non-interactive login shell!
login shell: A login shell logs you into the system as a spiecified user, necessary for this is a username and password
According to the web description on login shell
For non-interactive non-login shell, give an example here:some daemon such as mysqld or apache2 ,all of them are non-interactive non-login shell.
It is your turn :true or false?
Best Answer
The login is the core concept in jargon--login shell.
There are four stages abstracted to describe linux work:Init, Getty, Login , Shell.
Here login is a program, which gets the username as a parameter, and prompts the user for the password.
On local side:
On server side(my vps server):
1.non-interactive login shell
general format:
ssh example.com <my-script-which-is-stored-locally
More clearly
The interpreter on local side break
ssh -t -t root@vps_ip < /tmp/shell.sh
into two parts.1.ssh -t -t root@vps_ip
login program accept root as user on the vps,logined.
2./tmp/shell.sh
the script on the local side passed as a parameter into interpreter on remote side ,and executed.
It is non-interactive login shell during the process.
2.non-interactive non-login shell
general format:ssh example.com my-script-which-is-stored-on-remote-machine
It is non-interactive non-login shell during the process.
Some hack trick can make it display as login shell.
The vps server does not be logined after the whole command ssh root@vps_ip '/bin/bash --login /tmp/shell.sh' performed.
The login_shell on displayed no meaning,it logined but vps server closed connection ,logined out.
Gilles's conclusions on non-interactive login shell and non-interactive non-login shell is right.