shell命令分为内置命令和外部命令。
内置命令是shell解释程序内建的,由shell直接执行,不需要派生新的进程。
外部命令分为二进制代码和shell脚本。
用户在命令行输入命令后,如果是shell外部命令,一般情况下Shell会fork并exec该命令。
执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。
外部命令
(1)为了执行外部的二进制命令,需要一种机制,以允许子进程转换为将要被执行的命令。Unix/Linux调用exec可以做到这些。它允许一个进程用其他命令的可执行代码覆盖自己。二进制代码需要由磁盘装入内存中执行。shell解释程序会调用fork自身的一个拷贝,然后用exec系列函数来执行外部命令,这样外部命令就取代了当前的fork的子shell。
(2)shell脚本的执行与二进制文件略有不同。对于shell脚本来说,shell解释程序会fork一个子shell程序,子shell程序会检查脚本的第一行(如#!/bin/bahs),找到用来执行脚本的解释程序,然后装入(exec)这个解释程序,由它执行脚本程序。在此解释程序显然是当前shell的子进程。脚本中的命令都是在子shell环境中执行的,不会影响当前shell的环境。
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。
shell script:
有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。
一般默认的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。
另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。
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关闭,然后换到后面的命令继续执行。
相关推荐
习惯了在Linux下使用命令的朋友, 现在可以在Windows使用大部分和Linux相同或相似的命令了. 例如grep,du,dd,less等等.只需要在%PATH%里添加路径(UnxUtils\usr\local\wbin),就可以方便地使用Linux常用命令了.
source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。 功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句 source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必...
Linux 命令详解词典.pdf,施威铭研究室著,大小 74 MB,被压缩成两部分分别上传。这是第二部分,第一部分下载地址:http://download.csdn.net/source/2685010。 本书精选了 381 个 Linux 命令,详细罗列 1729 个范例...
linux中用于解压.qp文件的命令qpress,在使用xtrabackup备份时使用了--compress,则在恢复时需要qpress.
Detailed analysis of the source code of system Linux helping you to understand how this system was constructed.
source insight Linux风格,很酷
source insight linux安装版本
linux常用命令大全 以下是一些Linux常用的命令及其解析: 1. **ls**:列出目录内容 * 解析:使用`ls`命令可以查看当前目录下的文件和子目录。例如,`ls -l`会以长格式显示文件和目录的详细信息。 2. **cd**:改变...
source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。 source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。...
linux常用命令大全 Linux常用命令的实验结果和总结 实验目的: 1. 熟悉和掌握Linux的基本命令。 2. 了解Linux文件系统的结构和特点。 3. 学会在Linux环境下进行基本的文件操作。 实验环境: 1. 操作系统:Linux...
SourceInsight for linux,安装前先必须安装wine,sudo apt-get install wine; 然后再wine + sourceInsight名
docker-compose-linux常用命令
The Source Code Of Linux 0.01
用Source Insight打开linux内核源代码.
linux source
Mysql数据库导入命令Source详解
所以今天收集了qt-opensource-linux-x64-5.10.0.run 、 qt-opensource-linux-x64-5.12.1.run 、qt-opensource-linux-x64-5.12.6.run、qt-opensource-linux-x64-5.12.9.run 、qt-opensource-linux-x64-5.12.12.run给...