Linux中shell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。

首先,看下我们的脚本内容

[tan@tan scripts]$ ll
total
-rw-rw-r--. tan tan May : test.sh
[tan@tan scripts]$ cat test.sh
#!/usr/bin/bash /usr/bin/python <<-EOF
print "Hello Shell"
EOF

1、工作目录执行

工作目录执行,指的是执行脚本时,先进入到脚本所在的目录(此时,称为工作目录),然后使用 ./脚本方式执行

[tan@tan scripts]$ ./test.sh
-bash: ./test.sh: Permission denied
[tan@tan scripts]$ chmod test.sh
[tan@tan scripts]$ ./test.sh
Hello Shell

如图,报了权限错误,上一篇博文有提到,这里需要赋权,使用chmod 764 test.sh 赋权后就可以正常执行了

./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录 (/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

2、绝对路径执行

绝对路径中执行,指的是直接从根目录/到脚本目录的绝对路径

[tan@tan scripts]$ pwd
/home/tan/scripts
[tan@tan scripts]$ `pwd`/test.sh
Hello Shell
[tan@tan scripts]$ /home/tan/scripts/test.sh
Hello Shell

这里 `pwd` 指的是该命令执行结果,等同于 /home/tan/scripts

3、sh执行

sh执行,指的是用脚本对应的sh或bash来接着脚本执行

[tan@tan scripts]$ sh test.sh
Hello Shell
[tan@tan scripts]$ bash test.sh
Hello Shell

注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三 是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用 指定bash路径自然也好理解了啊,呵呵……。

4、shell环境执行

shell环境执行,指的是在当前的shell环境中执行,可以使用 . 接脚本 或 source 接脚本

[tan@tan scripts]$ . test.sh
Hello Shell
[tan@tan scripts]$ source test.sh
Hello Shell

shell脚本4种执行方式的更多相关文章

  1. shell脚本的常用执行方式

    1.sh+脚本的相对路径 [jinghang@hadoop101 datas]$ sh helloworld.sh helloworld sh+脚本的绝对路径 [jinghang@hadoop101 ...

  2. 【Shell脚本学习1】Shell简介:什么是Shell,Shell命令的两种执行方式

    Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释 ...

  3. 【转】shell 教程——01 Shell简介:什么是Shell,Shell命令的两种执行方式

    Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释 ...

  4. Shell简介:什么是Shell,Shell命令的两种执行方式

    Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释 ...

  5. shell教程-001:shell简介 什么是shell,shell命令的两种执行方式

    Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的. Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解 ...

  6. Linux 下Shell 脚本几种基本命令替换区别

    Shell 脚本几种基本命令替换区别 前言:因为工作需要,需要编写 shell script .编写大量 shell script 时,累计了大量经验,也让自己开始迷糊几种函数输出调用的区别.后面和 ...

  7. shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...

  8. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  9. 读书笔记——spring cloud 中 HystrixCommand的四种执行方式简述

    读了<Spring Cloud 微服务实战>第151-154页, 总结如下: Hystrix存在两种Command,一种是HystrixCommand,另一种是HystrixObserva ...

随机推荐

  1. null undefined NaN

    数据类型 6大基本 Number  String Boolean Undefined Null.  Symbol (ES6)   3大引用类型 object array Function Regexp ...

  2. 【Linux】宝塔服务器磁盘爆满处理方法

    直接上图 1 清理网站日志/php站点session/系统邮件/临时文件 cd /www/server/panel && python tools.pyc clear 2 清空面板回收 ...

  3. 使用draw.io桌面版代替visio制作流程图

    前言 draw.io是一款在github上的开源产品,由于需要构建在线文档,需要插入画图类型, 对比多款开源产品,最终选择了draw.io. draw.io图标资源非常的丰富,方便导入图标资源,基本上 ...

  4. [LeetCode] 337. House Robber III 打家劫舍 III

    The thief has found himself a new place for his thievery again. There is only one entrance to this a ...

  5. 【SSH进阶之路】Spring的IOC逐层深入——Spring的IOC原理[通俗解释一下](三)

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  6. 用Vue2.0实现简单的分页及跳转

    用Vue2.0实现简单的分页及跳转 2018年07月26日 20:29:51 Freya_yyy 阅读数 3369    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  7. 西门子PLC1200内使用SCL实现简化版PID算法

    西门子自带的PID效果很好,但是会比较吃性能,使用次数有限,很多地方需要PID但不需要这么精准的PID,所以网上找个简单的算法自己调用. 新建数据类型 前三个就是PID三个参数 新建FC块: #PID ...

  8. Jenkins+TestNG+gitlab+maven持续集成

    准备工作: 1.安装Jenkins 网上有jenkins安装配置教程 2.jenkins配置 2.1全局工具配置 配置JDK JDK别名:名称可以随意,但是要方便识别 JAVA_HOME:centos ...

  9. c++ std::cout重定向到文件

    cout默认是与监视器(屏幕)相连,cout出来的内容会输出到屏幕上,通常是会在命令行窗口之中.但有时,我们希望将cout出来的具体日志.错误信息写到某个文件之中,而屏幕上仅仅显示出当前进行的任务,以 ...

  10. 开源之路2--SSH

    SSH 为 Secure Shell (安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH是每一台Linux电脑的标准配置. SSH 是建立在应 ...