关闭

登录/非登录、交互/非交互式shell

标签: shelllinux交互登录
275人阅读 评论(0) 收藏 举报
分类:

登录与非登录shell的:

区分:是否需要输入用户名密码。

转换:

非登录可以转换成登录 使用--login

考虑转换情况,相对科学的区分:既不使用密码,也不使用--login转换的是非登录,其他都是登录。

登录与非登录运行shell的区别:

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

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


交互式与非交互式shell:

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

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

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


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

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

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

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

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6934次
    • 积分:177
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论