执行shell脚本的几种方式


shell语言在工作中使用比较广泛,但是学习的话基本上是遇到什么学什么,没有比较系统的学习,记录一下今天的学习情况。

一.shell解释器

首先了解一下shell脚本解释器。顾名思义,shell解释器就是执行shell脚本的解释器。解释器有很多种,比如sh、bash、csh、tcsh、zsh等,最常用的就是sh和bash。

查看命令:

cat /etc/shells 查看系统可使用的shell编译器类型。
cat /etc/passwd 查看当前默认设置,一般在第一行。

实际操作:
在这里插入图片描述
可以看到当前系统上有很多种编译器类型。使用which命令可以看到编译器所在位置,/usr/bin/sh是一个链接文件,链接到bash。
在这里插入图片描述
所以在编写shell脚本的时候,第一行推荐加上#!/bin/bash或者#!bin/sh,来说明使用哪个编译器。

1.sh和bash的区别

sh 遵循POSIX规范:“当某行代码出错时,不继续往下解释”。bash 就算出错,也会继续向下执行。

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )。
POSIX标准意在期望获得源代码级别的软件可移植性。
换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统上编译执行。

举例说明:

sh 脚本:
#!/bin/sh
source err
echo "test sh"
结果为:
test.sh: line 2: source: err: file not found

bash 脚本:
#!/bin/bash
source err
echo "test sh"
结果为:
testsh.sh: 2: testsh.sh: source: not found
test sh

二.执行shell脚本的几种方式

假设test.sh脚本为

#!/bin/bash
echo "test sh"

1 ./test.sh运行

需要有执行test.sh文件的权限,没有权限的话可以使用chmod +x test.sh命令赋权。./的意思是说在当前的工作目录下执行test.sh。如果不加./的话,必须保证当前目录在环境变量PASH中,test.sh才可以执行成功,不然会报错。

2 sh test.sh或者bash test.sh运行

sh和bash都是shell解释器执行,第一部分也讲了它们俩的区别。若是以第二种方式执行,那么,可以不必事先设定shell的执行权限。因为方法二 是将test.sh作为参数传给sh(bash)命令来执行的。这时不是test.sh自己来执行,而是被人家调用执行,所以不要执行权限。

3 . test.sh或者 source test.sh运行

shell环境执行,指的是在当前的shell环境中执行。不需要事先设定shell的执行权限。

参考链接:
https://www.jb51.net/article/161001.htm
https://www.cnblogs.com/EasonJim/p/6850471.html
https://blog.csdn.net/weixin_45606836/article/details/104384870

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值