发新帖

关于交互式shell和非交互式shell、登录shell和非登录shell

myccloves / 2018-10-7 20:08
浏览: 1191 / 回复: 4
查看: 1191|回复: 4

关于交互式shell和非交互式shell、登录shell和非登录shell

[复制链接]
收藏
跳转到指定楼层
本帖最后由 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
复制代码

在子shell中是可以访问的
  1. bash
  2. echo $a
复制代码

但要注意,在子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
复制代码

个人配置
  1. ~/.bash_profile
  2. ~/.bashrc
复制代码

三、关于交互式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
复制代码

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

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


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



评分

参与人数 3贡献 +9 收起 理由
aida + 3 原创内容!
lolimay + 3 原创内容!
wtz + 3 加分鼓励 : )

查看全部评分

办公已解决:打印机驱动,打印机共享,截图识字

53

主题

426

帖子

3489

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
3489
lixiaobai 发表于 2018-10-8 22:51:44 来自移动端 | 显示全部楼层
对于不搞开发的,shell有时能极大提高工作效率的。有空再拜读下你的博客

18

主题

306

帖子

1957

积分

drw-r-----

Rank: 7Rank: 7Rank: 7

积分
1957
QQ
lolimay 志愿者 发表于 2018-10-8 23:49:45 | 显示全部楼层
前排支持

92

主题

681

帖子

3837

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
3837
ritter 发表于 2018-10-9 07:45:04 | 显示全部楼层
牛逼,前排!!!!!!!1

215

主题

4206

帖子

1万

积分

d-rw-rw-r--

Rank: 8Rank: 8

积分
15813
aida 官方管理员 志愿者 发表于 2018-10-9 14:31:44 | 显示全部楼层
666  支持原创干货!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回版块 返回顶部