hello大家好😁
前言❓
我目前学习到五种种执行bash shell脚本的方法
- 使用“sh”执行脚本
- 使用绝对路径或相对路径执行脚本
- 直接使用脚本名称
- 使用“source”执行脚本
- 使用“. ”执行脚本
我们来分析一下这五种方式的使用区别
分析❗
我们先在用户主目录的bin目录下创建printhostname.sh文件。执行这个文件后,会显示出主机名称
使用“sh”执行脚本
对应的xxx.sh脚本没有执行权限也可以执行
我们先看一下文件的权限信息:
可以看到printhostname.sh文件是没有执行权限的。但我们用sh 加 文件路径 ,是可以执行成功的
因为sh是系统命令,是直接和内核通信的,脚本直接被当做是命令的参数,因此文件没有x权限也可以执行
使用绝对路径或相对路径执行脚本
直接执行脚本的绝对路径或相对路径
但是,对应的xxx.sh脚本必须要有对应执行权限才可以执行
然后我们给这个文件添加执行权限后再执行:
发现这时执行成功
我们再切换到别的目录底下,就要用绝对路径去执行:
直接使用脚本名称
对应的xxx.sh脚本所在的目录必须在环境变量中,并且文件需要有执行权限
我们这里用到的printhostname.sh文件是创建在用户主目录下的bin目录下的,我们查看环境变量PATH,可以看到这个目录在环境变量中:
同时我们给文件添加了x权限
然后就可以直接使用脚本名称执行
使用“source”执行脚本
对应的xxx.sh脚本没有执行权限也可以执行
但多用于使配置文件生效
类似sh命令,脚本文件做命令的参数:
使用“.(空格)”执行脚本
不需要单独添加x执行权限,它和source类似,权限继承与bash。多用于使配置文件生效
总结💯
最后我们对以上五种方式做一个总结:
- 必须要给脚本文件添加执行权限才可以执行的方法有两个:
①使用脚本文件的绝对路径或相对路径执行脚本
②直接使用脚本名称 - 在当前shell进行,而不会开启子shell的方法有两个:
①使用“source”
②使用 “. (空格)”
在其他三种方式中,脚本执行时会开启一个子shell环境,在子shell执行完后,子shell环境随即关闭,然后又回到当前shell中
但是我们执行脚本时一般都不使用 “source” 和 “. (空格)”
而且更多时候会给脚本文件添加执行权限
感谢💖
好啦,这次的分享就到这里,感谢大家看到这里💕,我目前还是学习中小白,十分希望能和各位朋友们大佬们在讨论区互动💫再次感谢💞