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所带的。