shell 下 exec,source,.,bash和sh以及export得区别

exec执行命令时,不会启用新的shell进程。
  source和 .也不会启用新的shell进程,在当前shell中执行,设定的局部变量在执行完命令后仍然有效。
  bash或sh执行时,会另起一个子shell进程,其继承父shell进程的环境变量,其子shell进程的变量执行完后不影响父shell进程。
  exec是用被执行的命令行替换掉当前的shell进程,且exec命令后的其他命令将不再执行。
  例如在当前shell中执行 exec ls 表示执行ls这条命令来替换当前的shell ,即为执行完后会退出当前shell。
  为了避免父shell被退出,一般将exec命令放到一个子shell脚本中,在父sehll中调用这个子shell脚本,调用处可以用bash xx.sh(xx.sh为存放exec命令的脚本),这样会为xx.sh建立一个子shell去执行,当执行exec后该子shell进程就被替换成相应的exec的命令。
posted @   牧之丨  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2023-07-19 Sublime Text 4143 激活码
2019-07-19 Java中如何动态创建接口的实现
2018-07-19 Error: Cannot find module 'babel-runtime/regenerator'
2018-07-19 redis list 清空记录小技巧
2018-07-19 fastJson 之 JSONPath使用
2014-07-19 电脑黑屏滴滴笔记
2014-07-19 滴滴故障表
点击右上角即可分享
微信分享提示