五种bash shell执行方式 fork, source, exec, (), {}

Shell脚本的执行方式:

注明:wd代表“脚本保存的目录”

1.fork
语法:/wd/shell.sh
fork是最普通的, 就是直接在脚本里面用/wd/shell.sh来调用shell.sh这个脚本.运行的时候开一个子shell执行调用的脚本,子shell执行的时候, 父shell还在。子shell执行完毕后返回父shell。子shell从父shell继承环境变量.但是子shell中的环境变量不会带回父 shell

2.exec
语法: exec /wd/shell.sh
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别。

3.source 
语法:source /wd/shell.sh
与fork的区别是不新开一个子shell来执行被调用的脚本,而是在同一个shell中执行。所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用。

4.()
语法:( 语句;语句;语句;…… )
圆括号中命令列表的命令将会运行在一个子shell中。

比如:
$ (cd ..;ls -l)
cd ..命令改变的是子Shell的PWD,而不会影响到交互式Shell。
然而命令
$ cd ..;ls -l
则有不同的效果,cd ..命令是直接在交互式Shell下执行的,改变交互式Shell的PWD,然
而这种方式相当于这样执行Shell脚本:
$ source ./script.sh
或者
$ . ./script.sh

source或者.命令是Shell的内建命令,这种方式也不会创建子Shell,而是直接在交互式Shell下逐行执行脚本中的命令。

source命令、.命令
语法: . filename [arguments]
    source filename [arguments]
作用:
当在命令 行中调用的时候, 这个命令将会执行一个脚本. 当在脚本中调用的时候, source file-name 将会加载file-name文件, 或者 . (点命令)一个文件将会在脚本中引入代码, 并将这些代码附加到脚本中(与C语言中的#include指令效果相同). 最终的结果就像是在使用"source"的行上插入了相应文件的内容. 
在多个脚本需要引用相同的数据, 或者需要使用函数库的情况下, 这个命令非常有用.

5.{}
{语句;语句;……}不会启动子SHELL。

bash shell执行方式的更多相关文章

  1. linux shell执行方式

    linux shell执行有两种方式 shell脚本以#!/bin/bash开头,执行shell时先检查首行,在内部以下列方式执行: $/bin/bash script.sh 1. 使用sh执行. $ ...

  2. Linux - Shell - shell 执行方式

    概述 shell 的执行方式 背景 偶尔执行个 shell 脚本 一般都用 './script' 执行 最近忽然看到 有不同的执行方式, 感觉有必要整理一下, 然后和大家分享 准备 os centos ...

  3. Bash shell执行命令的优先级

    1.别名2.关键字:if.function.while .until等3.函数4.内置命令5.可执行程序或脚本 别关函内可 =-=-=-=-=Powered by Blogilo

  4. 1、Bash Shell

    一.什么是Bash shell BashShell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕. 当我们 ...

  5. Linux基础篇二:Bash shell(壳,命令解释器)介绍

    shell执行方式: 第一:输入命令  (简单工作) 第二:   脚本  (适合大量工作) Bash shell 实际上的叫法是  GNU/Bash    如何查询呢:  bash - version ...

  6. 第9章 Shell基础(1)_Shell简介和脚本执行方式

    1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...

  7. shell各种执行方式区别

    shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别 原文出处:http://blog.csdn.net/dance_rise/article/deta ...

  8. shell入门笔记1:执行方式、运行方式、变量、替换

    说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell的两种执行方式 交互式(interactive) 解释执行用户的命令,用户输入一条命令,She ...

  9. Shell脚本的三种执行方式

    Shell脚本的执行方式可以有以下几种: 方式一:  ./script.sh # 利用小数点来执行 方式二:  sh script.sh 或 bash script.sh # 利用bash(sh)来执 ...

随机推荐

  1. 保存一个经常用的Makefile

    ############################################################# # Generic Makefile for C/C++ Program # ...

  2. HashMap代码解析

    hashmap (jdk 1.7)使用 “数组-链表” 方式进行存储,图形化表示如下: 即,前面是一个数组,后面跟一个链表,那么数据结构这个对应到HashMap的代码里面是什么样子的呢? 在HashM ...

  3. mybatis --- 如何相互转换逗号分隔的字符串和List

    如果程序员想实现某种功能,有两条路可以走.一条就是自己实现,一条就是调用别人的实现,别人的实现就是所谓的API.而且大多数情况下,好多“别人”都 实现了这个功能.程序员有不得不在这其中选择.大部分情况 ...

  4. 汉字编码 (GB2312 GBK GB18030)

    GB2312 收录简化汉字及符号.字母.日文假名等共7445个图形字符,其中汉字占6763个 每个符号都用两个字节表示,每个字节均采用七位编码表示,习惯上 第一个字节是高字节,第二个字节是低字节 GB ...

  5. SQLServer Always On FCI 脑裂及可疑状态修复

    FCI 双节点集群,因为晚上集群节点间的网络中断过.两个节点都觉得还有一个节点宕机,在各节点的集群管理中都看到对方已宕机. 连接到集群IP.提示 msdb 数据库有问题: watermark/2/te ...

  6. systemctl -- 系统服务管理器 【转】

    systemctl  -- 系统服务管理器 systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 直接运行命令可以列出所有正在运行的服务 ...

  7. Linux netstat常用命令

    1.统计80端口连接数netstat -nat|grep -i "80"|wc -l 2.统计httpd协议连接数(查看Apache的并发请求数及其TCP连接状态)ps -ef|g ...

  8. linux 设备驱动概述

    linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer):       主要利用C库函数和 ...

  9. Windows利用文件夹映射来同步文件

    在windows服务器上有时有这样的需求: 你的文件在f:\test中,但由于其它原因用户访问的是e:\test,如果又希望e:\test 中的文件与f:\test的保持同步,除了用同步软件来做外,可 ...

  10. 第四百一十三节,python面向对象,组合、类创建的本质、依赖注入

    组合 组合举例组合就是多个类,或者若干类联合起来完成一个任务下面举例两个类联合起来完成一个任务为了降低代码的耦合度,我们一般不会在一个类里实例化另外一个类,都是将一个类在外面实例化后传参到另外一个来这 ...