• 社区首页
  • 版块
关于交互式shell和非交互式shell、登录shell和非登录shell
深度杂谈1223个浏览 ·4个评论
电梯直达到第
myccloves
deepin^6
发表于2018-10-07 12:08
楼主
本帖最后由 myccloves 于 2018-10-7 20:09 编辑

今天看到用户登录时加载配置文件的资料,但被一些登录,非登录等概念搞晕了,所以单独来了解一下这方面的知识。

一、父shell与子shell
登录系统后会启动一个shell,如果在这里运行bash则会启动一个新的shell,这个新的shell就是子shell,而之前的shell就是父shell。我们在运行脚本时也会创建一个新的子shell,当程序结束时又回到父shell中。

在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中访问,可以使用export命令对已定义的变量进行输出。export命令会使创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。

如:在父shell中定义:
  1. a=3
  2. export a
Copy the Code

在子shell中是可以访问的
  1. bash
  2. echo $a
Copy the Code

但要注意,在子shell中不能修改父shell中a的值,因为子shell中的变量a是从父shell中复制的,所以改了也只是修改自己的。也就是说子shell会继承(复制)父shell中的变量。

子shell能继承父shell的变量,而这个子shell的变量,随着子shell的退出而消失。但我们可以用. 或source 命令,不开启子shell而运行脚本,从而使变量生效。比如修改完配置文件 ~/.bashrc,可以用 source ~/.bashrc方式重新读取。

二、关于shell的一些配置文件

全局配置
  1. /etc/profile
  2. /etc/profile.d/*.sh
  3. /etc/bashrc
Copy the Code

个人配置
  1. ~/.bash_profile
  2. ~/.bashrc
Copy the Code

三、关于交互式shell与非交互式shell

交互式shell就是在终端上执行,shell等用待用户输入,输入完成立即执行用户提交的命令,这种模式因为用户与shell交互了,所以是交互式shell。 一般我们登录,执行命令,exit或logout退出shell,这种shell就是交互式shell

非交互式shell,比如以脚本的方式执行,一行一行执行,执行完所有行,shell终止。这个过程没有与用户交互,这就是非交互式shell

四、登录shell与非登录shell

登录shell就是需要用户名和密码才能进入的shell(或通过--login选项生成的shell,比如:su –login username)

非登录shell就是不需要输入用户名和密码就可打开的shell,如直接输入bash打开一个子shell, 在图形界面打开一个终端(terminal)窗口也是一个非登录shell

五、交互式登录shell与非交互式登录shell的区别

交互式登录: 会清除变量 ,通过文件重新读入

  • 输入用户名和密码登录
  • 使用 su - username登录

此种方式登录会调用如下配置文件:

  1. /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile--> ~/.bashrc--> /etc/bashrc
Copy the Code

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

  • su username (注意没有-)
  • 图形界面下打开的终端
  • 执行脚本(执行脚本会打开一个新的子shell,就是创建一个新的进程)
  • 任何其它的bash实例(bash)


此种方式登录会调用如下配置文件:
  1. ~/.bashrc--> /etc/bashrc--> /etc/profile.d/*.sh
Copy the Code



回复收藏只看作者
所有回复
lixiaobai
deepin^6
发表于2018-10-08 14:51
沙发
对于不搞开发的,shell有时能极大提高工作效率的。有空再拜读下你的博客
lolimay
deepin^5
发表于2018-10-08 15:49
板凳
前排支持
ritter
deepin^6
发表于2018-10-08 23:45
地板
牛逼,前排!!!!!!!1
aida
deepin^7
发表于2018-10-09 06:31
4楼
666  支持原创干货!
发布帖子

光荣榜

  • 周榜
  • 月榜
  • 总榜