说明:以下是个人的见解,不一定都正确,如有错误,欢迎指正!

一,shell脚本的运行方式,最常见的有以下几种:

1 )  . xxx.sh,注意,前面是一个点'.'

2 ) source xxx.sh,这种方式和第一种的方式效果是一样的

3)./xxx.sh

4)  sh xxx.sh

5)  bash xxx.sh

二,shell运行方式结果的差异

1) . xxx.sh是在当前的bash环境下执行xxx.sh脚本文件,xxx.sh文件的所有者可以无可执行权限,原有的环境变量的值会被脚本修改。

2)source  xxx.sh,这种方式和方式1的执行效果是一样的,同样也不要求文件的所有者必须要有可执行权限,通常用于生效刚修改过的脚本文件,例如我们在修改环境变量配置脚本文件之后就通过执行source xxx使其立即生效,同样这种执行方式会修改原有的环境变量的值。

第一和第二种方式会修改原有的环境变量的值。

3)./xxx.sh方式运行脚本文件,会打开一个子shell来执行脚本文件,运行一个shell脚本时会启动另一个命令解析器。每个shell脚本运行在parent shell的一个子进程里,这个parent shell是指一个在控制终端或者在一个xterm窗口中给你指示符的进程,shell脚本也可以启动它自己的子进程。

这种运行方式要求被运行的脚本文件要有可执行的权限,否则脚本运行失败。

这种运行方式不会改变原有的环境变量的值。

4)sh xx.sh的方式执行脚本文件,这种方式会打开新的子shell读取并执行脚本,并且不要求被执行的文件必须有可执行的权限。

原有的环境变量的值没被改变

5)bash xxx.sh的方式运行脚本文件,这种运行方式也没有要求被执行文件必须有可执行的权限,和sh xxx.sh方式一样会打开新的子shell读取并执行脚本,也不会改变原有的环境变量的值。

总结:

  我们在写脚本的时候,有时候需要改变原有的环境变量的值,有时候不能改变原有的环境变量的值,这时候我们就要注意选择运行脚本的方式了,因为不同的运行脚本的方式会产生不同的结果。

shell脚本不同运行方式的差异的更多相关文章

  1. Shell脚本编程具体解释

    第12章 Shell脚本编程   l  Shell命令行的执行 l  编写.改动权限和运行Shell程序的步骤 l  在Shell程序中使用參数和变量 l  表达式比較.循环结构语句和条件结构语句 l ...

  2. 014-交互式Shell和shell脚本获取进程 pid

    Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...

  3. 使用 shell 脚本自动对比两个安装目录并生成差异补丁包

    问题的提出 公司各个业务线的安装包小则几十兆.大则几百兆,使用自建的升级系统向全国百万级用户下发新版本时,流量耗费相当惊人.有时新版本仅仅改了几个 dll ,总变更量不过几十 K 而已,也要发布一个完 ...

  4. 什么是Shell、Shell脚本

    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种 ...

  5. Shell脚本基础知识详细介绍(一)

    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种 ...

  6. shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)

    既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time...    shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...

  7. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

  8. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  9. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

随机推荐

  1. FastJSON杂项

    //通过TypeReference解决泛型的问题 List<Integer> rst = JSON.parseObject(v,new TypeReference<List<I ...

  2. .net中MVC Webapi多参数调用控制器方法

    http://blog.csdn.net/wulex/article/details/71545471 路由 public static void Register(HttpConfiguration ...

  3. 51nod 1065 最小正字段和 解决办法:set存前缀和,二分插入和二分查找

    题目: 这题要求大于0的最小字段和,常规O(n)求最大字段和的方法肯定是没法解的. 我的解法是:用sum[i]存前i项的和,也就是前缀和. 这题就变成了求sum[j]-sum[i]的大于0的最小值( ...

  4. codeforces 493 C Vasya and Basketball

    题意:给出三分线的值d,分别有两支队伍,如果小于等于d,得2分,如果大于d,得三分,问使得a-b最大时的a,b 一看到题目,就想当然的去二分了----啥都没分出来---55555555 后来才知道不能 ...

  5. CDR X6设计师的福利,3折特惠!

    最新消息称,即日起CorelDRAW官方为回馈新老用户长期以来的支持,特别推出CorelDRAW X6降价活动.目前CorelDRAW X6售价仅为2399元,照这个价格,CDR 2017     会 ...

  6. Dapper优秀资料

    dapper extensions (predicates) https://www.cnblogs.com/starluck/p/4542370.html

  7. 转义JavaScript特殊字符

    JavaScriptUtils.javaScriptEscape("%admin' or '1=1") //转义JavaScript特殊字符

  8. luoguP1555 尴尬的数字(暴力+map)

    题意 题解 枚举每一个可能的二进制数.扔到一个map里 再枚举每一个可能的三进制数看map有没有就行了 反正就是很水 #include<iostream> #include<cstr ...

  9. 工作笔记5.JAVA图片验证码

    本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServl ...

  10. hibernate ID生成策略配置

    1.Student.hbm.xml配置 <hibernate-mapping package="com.wxh.hibernate.model"> <class ...