linux系统中执行shell脚本的三种方式

shell脚本的执行方式有三种,假如我们的脚本名称是test.sh

①./test.sh    或者   path/test.sh      

该运行方式我们在日常工作时经常测试使用,有两点需要注意,

第一该脚本当前用户必须有可执行权限,即有x权限,如无,需要chmod +x test.sh;

第二如果在其他脚本中调用该脚本一定要写绝对路径(后者)来运行,如crontab表达式里

②bash  test.sh    或者   sh  test.sh

这种方式一般在正式脚本里使用,即使脚本没有可执行权限,或者脚本文件开头没有指定解释器时也可以使用,如#!/bin/bash

③source  test.sh    或者   .  ./test.sh

该方式与前面两者不同,它不用调用子进程来进行运行,是可以直接在当前进程中运行并且把结果显示在当前进程中。实际应用中比如我们在脚本里调用其他脚本里的变量时都是采用source script_name.sh来实现调用

也许难以理解,现在我们来解释下

linux系统与windows系统的区别是后者的桌面与图形化做的完美,而前者的权限管理与多租户多用户完美,所以pc多用于windows系统,而开发多用linux系统

所以linux系统为了解决多用户管理问题,对某些变量都是独立运行并存储在当前用户里,不然这个用户跑变量影响另一个用户就不好了,所以我们使用第一种第二种方式时变量只显示自己当前进程里

举例说明

写一个脚本test.sh

bb="Hello World"
echo $bb
sleep 20

分别用前两种方式运行

可以看到,①方式不加权限无法运行,②方式可以运行并输出了,但是echo变量并不显示,使用pstree查看用户使用情况,可以看到有两个窗口在登陆,其中一个窗口在跑shell

现在我们使用第三种方式,同样该脚本文件并未赋予可执行x权限

可以看到变量显示了

总结:日常工作中,我们需要有规范心态,每一个shell脚本文件开头都备注上使用的什么解释器,即#!/bin/bash;脚本文件调用运行时使用绝对路径,即pwd显示的全路径;需要调用脚本变量时使用source 或者 . 来获取到变量内容

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神芷迦蓝寺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值