登录式shell和非登录式shell

默认分类 · 01-20

登录shell:是需要用户名、密码登录后才能进入的shell(或者通过--login”选项生成的shell)。

非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。

执行exit命令,退出一个shell(登录或非登录shell);
执行logout命令,退出登录shell(不能退出非登录shell)。

交互式登录shell和非交互式登录shell的区别

交互式登录:(清除掉所有变量,通过文件重新读入)

(1)直接通过终端输入账号密码登录
(2)使用“su - UserName”切换的用户
执行顺序:(影响该shell的配置文件)
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录:(会继承上一个shell的全部变量)

(1)su UserName
(2)图形界面下打开的终端
(3)执行脚本 (当我们执行脚本的时候.我们就已经进入到了一个子shell)
(4)任何其它的bash实例
执行顺序:(影响该shell的配置文件)
~/.bashrc--> /etc/bashrc--> /etc/profile.d/*.sh

使用./test.sh或者 bash ./test.sh执行脚本,执行脚本,执行脚本,执行脚本,执行脚本的时候,是开启一个子shell,这个子shell能继承,继承,继承,继承上一个父shell的变量,而这个子shell的变量,随着子shell的退出而消失。
当我们用. test.sh 或者source test.sh时,不开启子shell,在当前shell运行,子shell中的所有值都影响当前。

shell
Theme Jasmine by Kent Liao