
shell与subshell与执行脚本的几种方式
发布日期:2021-05-07 18:06:12
浏览次数:18
分类:技术文章
本文共 1192 字,大约阅读时间需要 3 分钟。
本文主要用来区别一下几个命令【其实要真正的区别这些概念还应该深入讨论进程的相关知识,这里暂且不表,待续~】
shell
subshell source $(commond) ` commond` execlinux执行Scripts有两种方式,主要区别在于是否建立subshell
1.source filename OR . filename 不创建subshell,在当前shell环境下读取并执行filename中的命令,就相当于顺序执行filename里面的命令 2.bash filename OR ./filename 创建subshell,此命令是在当前bash环境下再新建一个子shell执行filename中的命令子shell继承fushell的变量,但子shell不会改变父shell的变量,除非使用export【注释:有没有想过,这和命名空间是相似的道理,甚至和c中的函数也有些类似】
子Shell能够从父Shell继承得来的属性如下: 当前工作目录 环境变量 标准输入、标准输出和标准错误输出 所有已打开的文件标识符 忽略的信号 子Shell不能从父Shell继承得来的属性,归纳如下: 除了环境变量和.bashrc文件中定义变量之外的Shell变量 未被忽略的信号处理$(commond)
这个的作用是让命令在子shell中执行 ` commond` 也是用来执行命令和,$()差不多exec commond
它替换了当前的shell却没有创建一个新的进程。进程的pid保持不变, it replaces the shell without creating a new process【如果想了解透彻应该去看c的进程】 那么它的作用是什么??? shell的内建命令exec将并不启动新的shell,而是用要被执行命令替换当前的shell进程,并且将老进程的环境清理掉,而且exec命令后的其它命令将不再执行。 因此,如果你在一个shell里面,执行exec ls那么,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,执行结束自然也就退出了。为了避免这个影响我们的使用,一般将exec命令放到一个shell脚本里面,用主脚本调用这个脚本,调用点处可以用bash a.sh,(a.sh就是存放该命令的脚本),这样会为a.sh建立一个sub shell去执行,当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。 exec 命令:常用来替代当前 shell 并重新启动一个 shell,换句话说,并没有启动子 shell。使用这个命令的时候,放在内存中的变量恐怕就要被清除了。但exec 在对文件描述符进行操作的时候,也只有在这时,exec 不会覆盖你当前的 shell 环境。发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月01日 18时01分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
习惯养成记打卡-第9章 项目资源管理
2019-03-04
LeetCode - 98. 验证二叉搜索树(迭代、递归)2
2019-03-04
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
2019-03-04
LeetCode - 5. 最长回文子串——字符串、动态规划
2019-03-04
【BFS】——LeetCode - 752. 打开转盘锁
2019-03-04
【快慢指针】——LeetCode - 287. 寻找重复数
2019-03-04
【数据结构系列】链表合并问题——链表的奇偶重排
2019-03-04
【Redis】Redis客户端实现的基本原理
2019-03-04
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
2019-03-04
事务到底是隔离的还是不隔离的?
2019-03-04
SpringMVC的Model对象的使用
2019-03-04
文本读取和csv文件生成工具类的编写
2019-03-04
@Import注解---导入资源
2019-03-04
重读&笔记系列-《Linux多线程服务端编程》第一章
2019-03-04
解决ubuntu在虚拟机(VMware)环境下不能联网的问题
2019-03-04
LeetCode - 字符串相乘
2019-03-04
C# 适配器模式
2019-03-04
二分查找与插入排序的结合使用
2019-03-04
892 三维形体的表面积(分析)
2019-03-04
40. 组合总和 II(dfs、set去重)
2019-03-04