- 浏览: 329803 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (224)
- Java (34)
- Test (3)
- Linux/Unix (32)
- Windows (8)
- Oracle (78)
- Oracle Backup & Recovery (3)
- SqlServer (1)
- Database (3)
- Open Source (2)
- Server Management (1)
- Apache ActiveMQ (1)
- IBM WebSphere MQ (7)
- IBM WAS (15)
- 其它 (11)
- UML (1)
- Tools (1)
- Reference (0)
- Spring (11)
- Hibernate (5)
- VBScript (3)
- Network (1)
- Securities (2)
- Maven (6)
- logging (2)
- Web (1)
- AWS (3)
最新评论
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关闭,然后换到后面的命令继续执行。
发表评论
-
文件表达式
2016-11-23 00:54 1文件表达式-e filename 如果 filename存在, ... -
POSIX字符类. [:class:]
2015-08-29 18:51 56POSIX字符类. [:class:]这是另外一种, 用于 ... -
Linux下删除文件为何空间不释放
2014-10-20 20:47 1088为什么删除文件后磁盘空间还是不变 linux删除文件 ... -
grep 比 sed 速度快
2014-03-26 16:37 1023$ date; gzip -dc message*.gz | ... -
Pseudo-terminal will not be allocated because stdin is not a terminal.
2014-03-24 21:02 4160通过这种方式执行command的时候: ssh -q us ... -
Linux shell 进制转换
2014-03-13 10:48 981shell可以在不调用第3方命令,表示不同进制数据。这里总 ... -
linux shell 数组建立及使用技巧
2014-03-07 11:45 527linux shell在编程方面比windows 批处理强大 ... -
date - 时间格式化
2014-03-06 19:50 798%a当前区域的星期几的简写 (Sun..Sat) ... -
详细介绍Linux重定向的使用
2014-03-04 16:46 684Linux重定向是指修改原来默认的一些东西,对原来系统命令 ... -
linux shell中的比较符号
2014-02-28 17:48 189二元比较操作符,比较变量或者比较数字。注意数字与字符串的区 ... -
How To: Network / TCP / UDP Tuning
2014-02-21 22:01 932This is a very basic step by s ... -
Linux proc 文件系统简介
2014-02-19 14:53 1315/proc 文件系统是一个伪文件系统,它以文件系统的方式为用 ... -
linux echo颜色控制
2014-01-16 15:55 762echo要变换颜色的时候 ... -
sed命令详解
2014-01-14 12:06 1681.简介 sed是非交互式的编辑器。它不会修改文件,除非 ... -
什么是Bash Shell的内建(build in)命令
2014-01-02 15:41 8491.什么是build in命令: shell内建命令是指b ... -
Linux /dev目录详解
2013-12-02 18:11 728dev是设备(device)的英文缩写。/dev这个目录对所 ... -
.bash_profile和.bashrc的什么区别
2013-10-17 18:24 630/etc/profile:此文件为系统的每个用户设置环境信息 ... -
/etc/sysctl.conf
2013-03-28 12:04 967kernel.shmmax 定义单个共享内存段的最大值, ... -
/etc/security/limits.conf
2013-03-28 10:29 1858* soft core unlimited * hard ... -
Linux下hugetlbpage使用详解
2013-03-27 11:37 1339就Linux应用程序而言,使用的都是虚拟地址,当应用程序读写 ...
相关推荐
exec命令用来执行一个程序,并用该程序替换当前的shell进程,而source是使shell脚本中的命令在当前shell环境中执行,不创建新的子shell。 七、( )与{ }的不同 圆括号()用于创建子shell,其中的命令会在一个新的...
- 点命令(`.`或`source`):执行脚本中的命令,使变量和函数在当前shell环境中生效。 在实习内容中,实践了这些知识点,例如: - 修改`.bash_profile`以显示欢迎词和目录内容。 - 使用`history`和`alias`,并保存...
6. exec与source的区别:exec命令在Shell中用于执行文件中的命令,但不会启动新的shell进程,而是用执行的程序替换当前的shell进程。而source命令则用于在当前shell环境中执行文件中的命令,它不会创建新的子shell...
exec $HBASE_HOME/bin/hbase shell <<EOF truncate 'tracker_total_apk_fact_zyt' major_compact('t_abc') disable 't_abc' drop 't_abc' create 't_abc', 'info' EOF 以上这篇hbase-shell批量命令执行脚本的...
- **exec与source**:exec命令用于启动新的程序替换当前shell,而source命令则用于在当前shell环境中执行脚本。 - **命令组()与{}**:圆括号()和花括号{}在Shell脚本中用于命令的分组,但它们的行为略有不同。 - *...
以下是对标题和描述中提到的“Shell十三问”的详细解答: 1. **简介** Shell是操作系统提供的一种命令解释器,它将用户的输入解析成操作系统可以理解的命令,同时也支持编写脚本执行一系列命令。 2. **为何叫做 ...
在Shell脚本中,source与exec的差别在于,source命令会在当前Shell环境中执行脚本,而exec会在新的进程中替换当前Shell。 在结构化命令方面,()用于命令组,{}用于代码块。对于算术扩展,$(())用于整数运算,而$()...
Shell是Linux和Unix系统中的一种命令解释器,它允许用户通过命令行接口与操作系统交互。在Shell中,内置命令是直接由Shell执行的,而无需启动新的进程,这使得它们比外部命令更快、更有效率。以下是主要的Shell内置...
&&和||分别表示逻辑与和逻辑或,在Shell脚本中用于控制流程的分支和条件判断。熟练运用这两个运算符,可以构建出更复杂的逻辑结构。 ### 12. >与<的输入输出重定向 >和<分别用于输出重定向和输入重定向,使Shell...
5. exec与source的差别:exec命令用于替换当前Shell进程,而source命令则是在当前Shell进程中执行脚本,并不会产生新的Shell进程。 6. 小括号(())与大括号({})的差别:小括号用来创建子Shell来执行命令,而大...
Shell 和 Carriage 在这里可能指的是 Shell 语言中的两个概念,但根据上下文来看,这似乎是指向某个特定场景或技术细节。通常情况下,Shell 与 Carriage 并无直接关联。如果此处提及的“Carriage”是指 carriage ...
5. 使用`source script`命令测试脚本,或者通过`chmod a+x script`赋予脚本执行权限,然后使用`./script`执行。 **Bash关键字和功能** - `echo`:在终端上打印字符串。 - 特殊变量(如 `$1` 至 `$9`):保存脚本的...
本文将详细讲解在Shell脚本中调用其他Shell脚本的三种常见方法:`fork`、`exec`以及`source`,并提供实例以帮助理解它们的工作原理和应用场景。 1. **fork** `fork`是最常见的调用方式,它会在当前Shell环境中创建...
Linux Shell脚本是一种在Linux操作系统中执行的命令行脚本,它是通过Shell(如bash、sh、csh等)...在"Linux Shell脚本攻略.pdf"这本书中,你可能将找到详细的教程和实例,帮助你从初学者逐渐成长为Shell脚本的高手。
在Shell脚本中,`var=value`用于声明和初始化变量,而`export`关键字用于将变量声明为环境变量,这意味着该变量不仅在当前Shell中可用,也可以被其子Shell继承。 #### 6. exec与source的差异 `exec`命令用于在当前...
- `source`:读取并执行文件中的命令。 - `limit`:设置资源限制。 - `dirs`:操作目录栈。 - `echo`:打印文本到标准输出。 - `time`:显示命令的执行时间。 - `nice`:设置进程的优先级。 - `rehash`:重新...