linux:Shell中exec、source和shell script的区别

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

 

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。

bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。

在说明exe和source的区别之前,先说明一下fork的概念。

fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。

环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。

 

shell script:

有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。
新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句

#!/bin/sh

一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。
另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。

 

source:

source命令即点(.)命令。

在bash下输入man source,找到source命令解释处,可以看到解释"Read and execute commands from filename in the current shell environment and ..."。从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。

 

exec:

在bash下输入man exec,找到exec命令解释处,可以看到有"No new process is created."这样的解释,这就是说exec命令不产生新的子进程。那么exec与source的区别是什么呢?

exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行。

 

如何创建属于自己的大语言模型:从零开始的指南 随着人工智能的快速发展,大语言模型(LLM)在各种场景中表现出了卓越的能力,例如文本生成、对话交互内容总结等。本文将带你了解创建 LLM 的核心步骤,从理论到实践,让你拥有一个自己的智能助手。 阅读详情

相关推荐

软考中级信息系统监理师(第二版)-第21章基础设施工程监理

由于网络信息技术的飞速发展,变化日新月异,网络设计不但要保证目前网络传输容量的要求,也要考虑今后网络的发展,满足当前以及今后相当一段时间内的网络需求,便于向新技术的升级衔接,同时又需要保护原有的投资。通用布缆系统工程中,承建单位的竣工文档主要包括以下内容:承建合同,招标文件,投标文件,设计方案,工程实施组织设计方案,工程施工报告,隐蔽工程记录,变更记录,自测报告,信息点分布图(表),园区、楼宇、水平配线表,楼层平面图及无线设备点位图,无线设备信息表,竣工图纸等。多排安装时,列间距不应小于1200mm。

2301_78583973的博客 1381

Shellexecsourceshell script区别

execsource都属于bash内部命令builtins commands),在bash输入man execman source可以查看所有的内部命令信息。bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。在说明exesour

chaosl的专栏 1343

数字电视中的 Closed Caption (CC) 字幕标准协议

本文将详细介绍 DVB中的 CC 字幕标准协议,包括数据结构格式、字段定义、字段占用比特数以及字段用途。此外,本文还将举例说明如何从 TS 传输流中解析 CC 字幕信息,并组织打包到电视节目中进行显示。

以实战经验介绍行业知识 645

Bash基础——顺序执行命令

首先,值得提一下的是,在Bash里,最小的执行单位应该是pipeline. Bash支持对pipelines进行组合,产生顺序、条件、循环等结构。每个pipeline在其自己的subshell中执行,有自己的PID. 但是为了方便,在这里介绍顺序、条件、循环结构时,不刻意强调是由pipeline组成,依旧以命令(command)视为基本单元 顺序结构 用;分隔的顺序结构 $ command1;command2 以;分隔的命令按顺序执行。 Shell会依次等待每个命令执行终止,即每个命令都在自己的subsh

zjysource的专栏 3313

flume学习05---Exec Source

Exec SourceExec Source在启动时运行给定的Unix命令,并期望进程在标准输出上产生连续的数据(除非属性logStdErr设置为true,否则stderr将被丢弃)。 如果进程由于任何原因退出,source也会退出,并且不会生成更多数据。 这意味着诸如cat [named pipe]tail -F [file]之类的配置将产生期望的结果,其中日期可能不会 - 前两个命令产生数据流

chbxw 6964

Linuxexec命令相关

Linuxexec命令相关: execsource都属于bash内部命令(builtins commands),在bash输入man execman source可以查看所有的内部命令信息。   bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用独立的程序实现的,如sed、awk等等。内部 命令是由特殊的文件格式(.def)所实现,如cd、history

LiuX 10万+

shellexec解析

  参考:《linux命令、编辑器与shell编程》 《unix环境高级编程》   execsource都属于bash内部命令builtins commands),在bash输入man execman source可以查看所有的内部命令信息。 bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用独立的程序实现的,如sed、awk等等。内部命令是由特殊的...

weixin_30588675的博客 948

()linux exec与重定向

原文:http://xstarcd.github.io/wiki/shell/exec_redirect.html linux exec与重定向 execsource都属于bash内部命令builtins commands),在bash输入man execman source可以查看所有的内部命令信息。 bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用...

weixin_30685047的博客 133

shellexecsource执行脚本的区别

在UNIX/Linux中,经常需要写脚本执行自动化工作。执行脚本有多种方式,可以通过sh,sourceexec。这些方式有一些区别,需要根据需求选择合适的方式。 sh方式 使用$ sh script.sh执行脚本时,当前shell是父进程,生成一个子shell进程,在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。$ ./script.sh与$ sh scrip...

qccz123456的博客 1237

linux下的exec命令

shell 中的 exec 两种用法: 1.exec 命令 ;命令代替shell程序,命令退出,shell 退出;比如 exec ls 2.exec 文件重定向,可以将文件的重定向就看为是shell程序的文件重定向 比如 exec 5</dev/null;exec 5<&- ============================= shell的内建命令exec将并不启...

qq_31186123的博客 13万+

linuxexecsource命令区别

execsource都属于bash内部命令builtins commands),在bash输入man execman source可以查看所有的内部命令信息。 bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。 在说明exe

京东放养的爬虫 1847

linux中forkexec区别,linux shell中fork、sourceexec区别

execsource都属于bash内部命令(builtins commands),在bash输入man execman source可以查看所有的内部命令信息。bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。在说明exesource的区...

weixin_32040059的博客 438

linux脚本source,shellexecsource执行脚本的区别

在UNIX/Linux中,经常需要写脚本执行自动化工作。执行脚本有多种方式,可以通过sh,sourceexec。这些方式有一些区别,需要根据需求选择合适的方式。sh方式使用$ sh script.sh执行脚本时,当前shell是父进程,生成一个子shell进程,在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。$ ./script.sh与$ sh script.sh...

weixin_28716217的博客 342

linux中的fork, sourceexec区别

fork    使用 fork 方式运行 script 时, 就是让 shell(parent process) 产生一个 child    process 去执行该 script, 当 child process 结束后, 会返回 parent process,    但 parent process 的环境是不会因 child process 的改变而改变的.   source

SHUAI-CSDN 783

linux 下的 source,sh,./三者区别

linux里,source、sh、bash、./都可以执行shell script文件,那它们有什么不同吗? ----------- 1、source source a.sh 在当前shell内去读取、执行a.sh,而a.sh不需要有"执行权限" source命令可以简写为"." . a.sh 注意:中间是有空格的。 2、sh/bash sh a.sh bash a...

Linux和Eda技术分享 7344

linux source区别,Linux execsource的简单区别

Linuxexec.(Source)都可以同样来执行程序者脚本,要区别二者区别,首先了解linux下的2种命令内部命令外部命令内部命令是特殊文件格式.def实现的。外部命令是通过系统调用者独立程序实现的。其次shell执行脚本的时候有两种方式:1、当前shell下执行2、启动子shell在子shell种执行当shell启动子shell时候,通过fork创建进程子进程,首先子进程会继承...

weixin_39669163的博客 292

linuxshell脚本执行方法及execsource命令

execsource都属于bash内部命令builtins commands),在bash输入man execman source可以查看所有的内部命令信息。 bash shell命令分为两类:外部命令内部命令。外部命令是通过系统调用独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。 在说明exe

shuhuai007的专栏 1233

Linux shell sh bash . source exec区别

目录shell sh bash 执行examplesource . 执行exampleexec 执行example shell sh bash 执行 使用sh执行时,系统会给予一个新的bash来让我们运行脚本,就相当于创建一个子进程来运行(子进程运行时候父进程sleep,子进程执行完回到父进程),子进程会继承父进程(也就是你当前进程)的环境变量,但是不继承父进程的自定义变量(环境变量自定义变量我以后讲),当子进程执行完毕后,子进程bash内的素有的数据就会被删除. example 创建setenv.s

weixin_42160627的博客 591
上一篇: 在linux中手动安装ImageMagick
下一篇: linux source命令大全及其用法介绍
nash603
博客等级 码龄17年 30粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值