shell脚本5种执行方式及脚本不同的执行方法和区别详解

 更新时间:2022年07月19日 15:42:04   作者:血煞长虹  
我们都知道bash shell 脚本的方法有多种,下面这篇文章主要给大家介绍了关于shell脚本5种执行方式及脚本不同的执行方法和区别的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

shell脚本是一种脚本语言,他不需要编译,而是直接通过解释器,将脚本作为解释器程序的参数运行的。

我们通过编写vim test.sh,然后用不同方法执行名为test.sh的脚本。

#!/bin/bash
echo "hello word"

概述

1)使用绝对路径执行。
2)使用相对路径执行。语法格式:./a.sh
3)使用 sh或bash命令来执行。语法格式: sh a.sh 不需要执行权限 -x参数(显示执行过程)
4)使用 . (空格)脚本名称来执行。 语法格式:. a.sh 不需要执行权限(特别注意:第一个.后面有空格)
5)使用 source 来执行。 语法格式:source a.sh 不需要执行权限(主要用于生效配置文件)

下面针对这5种方式,我们一起来看看它们的具体使用方式和区别吧!

正题

一、方式1绝对路径和方式2相对路径,可以归纳为同一种方法

注意:新创建的脚本,默认没有x执行权限,需要给它用#chmod +x test.sh的方式,添加执行权限。在生产环境中不要轻易的给文件可执行权限;

[root@centOS7 shell]# /root/test/shell/test.sh   #使用绝对路径
hello word
[root@centOS7 shell]# ./test.sh  #使用相对路径

二、方式3使用 sh/bash命令来执行

注意:该方式虽然不需要手动给脚本添加x执行权限,但是它会改变脚本默认解释器类型。比如说:脚本首行定义的是#!/bin/bash,使用该方式,它会给你改用/bin/sh解释器,也就说,最终效果=#!/bin/bash --posix

特别之处:该方式1.不需单独给脚本分配x执行权限;2.甚至都不需要在脚本首行声明脚本解释器类型,因为脚本是被当做该命令的参数使用的。

注:你可能会对/bin/bash和/bin/sh的区别感兴趣,点击这里

ls 
chomod -x test.sh  #给脚本移除x执行权限
ls
sh test.sh    #第3种方式运行
bash test.sh  #第3种方式运行

三、方式4使用 . (空格)脚本名称来执行

注:该方式,不需要单独添加x执行权限,它和source类似,权限继承与bash。

ls  #查看脚本(灰色的,说明没有x可执行权限)
. test.sh   #注意,点后面有个空格

四、方式5使用 source 来执行(主要用于生效配置文件)

ls  #查看脚本(灰色的,说明没有x可执行权限)
source test.sh   #该方式多用些操作,被修改后的配置文件(使之重新加载)

注意: 

.和source的权限,继承的是/bin/bash的权限,在执行时也是将test.sh作为参数,并不需要test.sh有执行权限;和bash执行不一样的是,source和.不会创建子进程,是在当前shell进程下执行的,因为他们是内建命令,所以脚本中赋值的本地变量也会影响当前shell的,用的时候一定要注意(尽量使用前面的3种方式)。

区别

1.关于执行权限

仅前两种(相对路径、绝对路径)方法,需要chmod +x test.sh,给脚本单独添加x执行权限。后三种方法,均不需要单独添加x执行权限。

2.关于是否开启子shell线程

前三种方法,脚本执行时会开启一个子shell环境,在子shell执行完后,子shell环境随即关闭,然后又回到当前shell中。

后面两种. 和source方式,则是在当前shell中执行,不会开启子shell。

总结 

到此这篇关于shell脚本5种执行方式及脚本不同的执行方法和区别的文章就介绍到这了,更多相关shell脚本执行方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 编写Bash Shell通过gnuplot绘制系统性能数据图的方法

    编写Bash Shell通过gnuplot绘制系统性能数据图的方法

    这篇文章主要介绍了编写Bash Shell通过gnuplot绘制系统性能数据图的方法,做到可视化数据收集,需要的朋友可以参考下
    2015-07-07
  • Shell中if的基本语法和常见判断用法

    Shell中if的基本语法和常见判断用法

    这篇文章主要介绍了Shell中if的基本语法和常见判断用法,本文讲解了if的基本语法、对字符串的判断、对数字的判断、对文件属性的判断、逻辑判断等内容,需要的朋友可以参考下
    2015-06-06
  • Linux nc命令使用示例

    Linux nc命令使用示例

    nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉,nc命令在linux系统中实际命令是ncat,nc是软连接到ncat,这篇文章主要介绍了Linux nc命令使用示例,需要的朋友可以参考下
    2023-03-03
  • shell中set -e的具体使用

    shell中set -e的具体使用

    set -e是一个Shell命令,它用于在脚本运行时自动退出,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Shell编程之变量数值计算方法示例

    Shell编程之变量数值计算方法示例

    这篇文章主要给大家介绍了关于Shell编程教程之变量数值计算的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • 使用shell脚本执行hive、sqoop命令的方法

    使用shell脚本执行hive、sqoop命令的方法

    今天小编就为大家分享一篇使用shell脚本执行hive、sqoop命令的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • linux重启和关闭系统命令的写法

    linux重启和关闭系统命令的写法

    这篇文章给大家介绍了linux重启和关闭系统命令的写法,然后在文中给大家分享了linux五个重启命令,感兴趣的朋友一起看看吧
    2017-10-10
  • Linux 中的通配符详解及实例

    Linux 中的通配符详解及实例

    这篇文章主要介绍了Linux 中的通配符详解及实例的相关资料,希望通过本文能掌握Linux 通配符的知识,需要的朋友可以参考下
    2017-09-09
  • Linux下启动tomcat的方法

    Linux下启动tomcat的方法

    tomcat是随机启动的,所以在开启服务器的时候要手动开启tomcat,不然没法访问,本文给大家介绍linux下启动tomcat的方法,对linux启动tomcat的相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • 高级开发运维测试必须掌握的envsubst命令使用详解

    高级开发运维测试必须掌握的envsubst命令使用详解

    这篇文章主要为大家介绍了高级开发运维测试必须掌握的envsubst命令使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论