Linux实用(4):交互式登录shell和交互式非登录shell

1、当用户登录时或su – 用户名,该文件被读取

su – root,产生一个交互式登录shell。

su root,产生一个非登录交互shell。非登录交互shell,只执行 用户家目录下 .profile等配置文件。

你打开mac终端时,就是交互式登录shell,所以要使你的系统配置所有用户都生效,就要都以交互式登录方式。

 

对于Bash来说

登录shell:会首先读取和执行/etc/profile全局配置文件中的命令,然后依次查找~/.bash_profile、~/.bash_login 和 ~/.profile这三个配置文件,读取和执行这三个中的第一个存在且可读的文件中命令。除非被“–noprofile”选项禁止了。

非登录shell:只读取 ~/.bashrc (和 /etc/bash.bashrc、/etc/bashrc )文件,不同的发行版里面可能有所不同。

 

2、退出shell

#查看当前活跃的shell

ps -ef | grep bash

#退出当前shell(login 命令登录时,可以用logout退出)

exit

#可以查看当前shell ID , 退出shell后,可以执行这个指令来验证是否退出成功

echo $$

找到对应系统配置和用户级别配置

 

交互式与非交互式shell:

区分:是否与用户进行交互(在终端上执行,shell等待你的输入,并且立即执行你提交的命令。)

交互式与非交互式shell运行时的区别:

交互式shell下打开进程时,会启用工作控制job control(会影响到其子进程进程组的编号,作业控制模式下被shell打开的进程,进程组号为进程号),否则不会启用(其打开的进程组号继承父进程的进程组,既运行脚本的非交互式shell进程)。这是linux在作业控制中的设计,我准备另起文章探讨。在shell脚本中,使用set -m可以改变脚本的运行模式开启工作控制。

 

是否登录与是否交互是两个维度的概念,两两组合的四种情况均会出现:

1、登录交互式  最常见的登录系统后进行操作使用的shell。

2、非登录非交互式  常见的shell脚本的运行方式。

3、非登录交互式   在shell中使用bash调出shell、在系统中打开命令行工具等。

4、登录非交互式   强制使用登录方式打开的shell脚本。可以改变脚本访问的全局文件,在不少情况下也需要使用(远程使用非登录shell调用脚本但需要登录的全局环境时适用)。

    原文作者:代码狩猎者
    原文地址: https://blog.csdn.net/meishibuyaodarao/article/details/110498172
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞