login shell 和 nologin shell

linux 有两种登录shell:login和non-login:

login shell:登录shell时需要完整的登录流程,称为 login shell。何为完整:输入用户名和密码。例如:走tty1-tty6控制终端,或走ssh等伪终端远程登入。

non-login shell:登入shell时不需要输入帐号信息。例如在X11下,打开伪终端,或者在shell下,进入shell子进程。

这两种登入shell的区别是:在登入shell时,读取的配置文件不同。

login shell(bash)在登入时,会读取的配置文件:

1. /etc/profile

2. ~/.bash_profile 或~/.bash_login 或 ~/.profile

3. ~/.bashrc

第二步之所以有三个文件,是因为不同的shell有可能命名不同,只会按顺序读取其中的一个。

non-login shell(bash)在登入时,只会读取 ~/.bashrc

=======================

其实在Linux中还有一种用户登录,它不读任何配置文件,不属于login shell 也不属于 non-login shell。

它就是

sudo -u

sudo -u redis ll

sudo -u redis cd

都是不允许的。

原因很简单

sudo 是一种程序,在linux中输入sodu就是调用这个程序提升权限,

shell是一个命令解析器

sudo只能执行系统自带命令,而不能执行其他程序所带的命令。如ll、cd等均是shell所带的。

猜你喜欢

转载自fztree.iteye.com/blog/2221136