父Shell与子Shell

Login Shell

登录主机后,在执行Bash Script之前,其实我们已经处于一个BashShell中。

这个Shell叫login Shell,是将来我们执行任何Script的上层环境。又叫父SHell

其实每个帐号都可以自定义loginShell。以Linux来说,帐号的login Shell定义在/etc/passwd这个文件中。

/etc/passwd的每一行代表一个帐号,共有7个字段,之间用:隔开。

帐号:x:UID 使用者代码:GID 群组代码:用户信息:主目录:login shell路径

第二栏x为密码栏,基于系统安全考虑,编码后的密码已经被放入/etc/passwd文件中。

login Shell定义在第7个字段,如果这个字段的Shell程序不存在、不合法,或执行失败,则无法登录主机。

父Shell、子Shell

当在执行一个Shell Script时,父Shell会根据Script程序的第一行#!之后指定的Shell程序开启一个子Shell环境,然后在子Shell中执行此Shell Script。一旦子Shell中的Script执行完毕,此子Shell随即结束,回到父Shell中,不会影响父Shell原本的环境。

子Shell环境拥有与父Shell相同的环境变量、标准输入、输出、错误等。

例如:

test.sh文件内容

#!/bin/bash

cd /var/www/html

命令行:chmod +x /test.sh

命令行:./test.sh

执行完脚本后还原到父Shell,并且父Shell并没有进入/var/www/html目录。

注:这是因为当执行Shell文件时,父Shell会创建子Shell,各自独立。

如果需要使用父Shell来执行此脚本,可以使用:

命令行:. ./test.sh

注意.与./之间有一个空格符

子Shell继续开启子Shell

与父Shell启动子Shell方式一样,继续调用下去,即子Shell开启子Shell。

通过$SHLVL变量,可以知道当前所在Shell的层次

父Shell与子Shell相关推荐

  1. Linux中shell运行方式,linux脚本中父shell与子shell 执行的几种方式

    本文主要介绍以下几个命令的区别: shell subshell source $ (commond) `commond` Linux执行Scripts有两种方式,主要区别在于是否建立subshell ...

  2. Linux中父shell 与 子shell :subshell 和 child shell

    子shell的概念 中文翻译过来的"子shell"叫法,实际上包括了"subshell"和"child shell". subshell是指 ...

  3. [shell问答录]:命令、进程、子shell...

    2019独角兽企业重金招聘Python工程师标准>>> 前些天在CU上讨论一个统计正在执行的脚本数量的问题过程中,发现自己对于shell如何执行命令方面了解还是甚少,惭愧惭愧...期 ...

  4. Linux编程 9 (shell类型,shell父子关系,子shell用法)

    一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

  5. c语言 子进程,子Shell和子进程

    Shell 中有很多方法产生子进程,比如以新进程的方式运行 Shell 脚本,使用组命令.管道.命令替换等,但是这些子进程是有区别的. 子进程的概念是由父进程的概念引申而来的.在 Linux 系统中, ...

  6. linux shell变量作用域,Shell变量的作用域:Shell全局变量、环境变量和局部变量

    Shell变量的作用域(Scope),就是Shell变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像A班有个叫小明的同学,B班也有个叫小明的同学,虽然他们都叫小明( ...

  7. shell编程-初始shell及变量

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  8. (2)shell编程学习 Shell中的变量(预设变量表)及变量定义与特殊变量 (脚本小子的进阶之路)

    这里尽量以较简略的篇幅讲解,如果之前有Python PHP语言基础的话,学习应该非常快.当然文章篇幅有限,只能讲一些主要的地方,一些偏的知识可能不讲. 目录 变量 局部变量 环境变量 自定义环境变量 ...

  9. Shell编程--初识shell

    文章目录 shell 定义 父shell和子shell 配置shell 创建一个shell脚本 执行一个shell脚本 编程语言的分类: 编译型语言:运行编译型语言是相对于解释型语言存在的,编译型语言 ...

最新文章

  1. 外卖平台涉嫌大数据杀熟,处理不能“自说自话”
  2. [20190113]四校联考
  3. vue解决启动报错cjs loader.js Error: Cannot find module ‘../config‘问题
  4. Python 让所有奇数都在偶数前面,而且奇数升序排列,偶数降序排序
  5. usb接口驱动_乾坤合一~Linux设备驱动之USB主机和设备驱动
  6. python3函数调用时间_Python3 time clock()方法
  7. python获取终端输出流_Linux下用Python获取命令行输出的几个方案
  8. python安装json模块_python 标准模块之json 模块
  9. Is It A Tree?(hdu1325)
  10. static关键字(pass)
  11. ios android 宏,iOS常用宏(不断更新)
  12. 概率论与数理统计思维导图_“我更强调统计学的思维”——专访北京师范大学未来教育学院李勇教授...
  13. 留言列表模板HTML代码
  14. 玩转 ESP32 + Arduino (十九) SIM800L上传数据到OneNet(新版Mqtts)
  15. 如何下载衡水市卫星地图高清版大图
  16. 【资料】分享北京某培训机构全部学习课程加个人的一些学习上的建议
  17. linux gz是什么文件,gz是什么
  18. SQLyog启动:错误号码2003问题的解决
  19. Springboot引入hibernate配置自动建表并进行增删改查
  20. c语言20s计数器,供应电子计时器、JC20S、JY20S、计数控制器、计米器

热门文章

  1. 同花顺2020春招一面二面在线编程题(java开发)
  2. vue PC端微信扫码登录
  3. 前端热门工具简直不要太好用了!
  4. 2020-09-23
  5. 内网穿透工具NPS安装使用
  6. 【Web】自定义网页漂浮物
  7. 计算机语言space什么意思,space是什么意思
  8. 开放平台回顾与前景展望
  9. 淘宝天猫除了领优惠券,还可以领商家返利,这个你们知道吗?
  10. js编程常见错误:Uncaught TypeError: XXX is not a function解决