执行Shell脚本的三种方式

546 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

执行Shell脚本的三种方式

脚本

首先我们创建一个test.bash文件,test.bash脚本内容如下

#!/bin/bash
echo 'hello world!'

执行方式

1. bash+脚本名,或者sh+脚本名

$ sh test.sh
$ bash test.sh

2. 赋予可执行权限,直接执行

$ chmod +x test.sh
$ ./test.sh

为啥不能在赋予可执行权限之后,直接执行test.sh

$ test.sh
bash: test.sh: command not found

因为直接执行test.sh,默认会去bin目录下查找该输入项是不是可执行的命令,很明显不是,会报错。因此需要带目录进行执行,相对路径和决定路径都可以

$ ./test.sh
hello world!
$ /d/workSpace/shortcut_key/test.sh
hello world!

3. 基于当前shell命令行执行

$ source test.sh
# 可以简写为
$ . test.sh

该方式和上述的两种方式的最大区别就是:

  • 上述两种执行脚本的方式,都会基于当前shell,新开一个子shell执行脚本
  • 而使用source执行的脚本,会在当前输入命令的shell执行
  • 最大的作用:保证变量的作用域正确,避免子shell声明的变量,在父shell中未定义