shell脚本执行方式

shell脚本执行方式

Linux系统中shell脚本有三种执行方式,分别为直接运行,利用解释器运行,source命令执行。

直接运行

直接运行脚本的前提需要该文件具有可执行权限,可以使用chmod +x ./scriptName.sh授权。

直接运行脚本文件本质就是使用shell脚本的绝对路径运行,运行格式为./scriptName.sh或者/path/to/scriptName.sh

举例:创建~/test.sh文件(~符号代表/home家目录)

文件内容如下所示:

请添加图片描述

使用chmod +x ./test.sh赋予可执行权限:

请添加图片描述

./test.sh运行和/root/test.sh运行:

请添加图片描述

在使用该运行方式时,虽然为该文件赋予了可执行权限,但是不能直接使用该文件名称运行,直接使用名称运行时,Linux会默认从环境变量路径中查找,如果该文件没有放置在环境变量中则会报错:command not found

请添加图片描述
这种也可以解决,只要将当前目录添加进入环境变量即可。

解释器运行

解释执行就是使用sh解释器运行,包括sh,bash这些解释器,这个运行方式不需要脚本文件拥有可执行权限。

再使用前面的例子,首先使用chmod -x去除可执行权限,再使用bash解释运行。

运行方式:bash 后接文件。

请添加图片描述

source命令执行

source命令执行又称为当前shell环境执行,这种执行方式与之前的执行方式的不同之处在于它不会创建新的子shell执行脚本,而是在当前的shell环境中直接运行脚本。这种方式运行不设置环境变量的脚本的时候与前两种方式感觉不到明显的区别,但是如果这个脚本设置了环境变量,就能感觉到。

运行方式:source script.sh. script,这两种方式等价。

先运行上述的例子。

请添加图片描述

这里明显感觉不到区别,但是我们可以写一个需要设置环境变量的脚本

举例:创建set_path.sh文件,文件内容如下所示:

请添加图片描述

这个脚本修改了PATH变量,添加了家目录,先使用直接运行或bash运行,查看,再查看PATH变量是否改变,然后使用source执行进行查看。

直接运行和bash运行结果:

请添加图片描述

source运行结果:

请添加图片描述

可以看到前面两种的执行方式当前的环境变量没有改变。
基于这种区别,可以直接使用source去刷新~/.bashrc中设置的环境变量,而不需要使用su去重新登陆来刷新

此处将/root添加进入了环境变量,我再使用test.sh的方式运行,查看会不报错。(赋予可执行权限)
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值