最近有人问我一个问题。执行shell脚本有哪些不同的方式,每种方式之间有什么区别?
我说我们可以在以下方法中运行 shell 脚本,假设 test.sh 是脚本名称,
- sh测试.sh
- ./test.sh
- 。 ./test.sh
我不知道 1 和 2 之间的区别。但通常在前 2 种方法中,执行时,它将生成新进程并运行相同的进程。而在最后一种方法中,它不会产生新的进程。相反,它在同一个中运行。
如果我错了,有人可以对此提出更多见解并纠正我吗?
sh test.sh
告诉要使用的命令sh
执行test.sh
.
./test.sh
告诉命令执行脚本。解释器需要在第一行定义,例如#!/bin/sh
or #!/bin/bash
. Note (谢谢凯尔塔 https://stackoverflow.com/questions/18331893/difference-between-different-ways-of-running-shell-script/18331933?noredirect=1#comment26906428_18331933)在这种情况下文件test.sh
执行该命令的用户需要有执行权限。否则不会被执行。
在这两种情况下,所有使用的变量都会在脚本执行后过期。
. ./test.sh
获取代码源。也就是说,它执行它,并且执行的任何内容、定义的变量等都将保留在会话中。
欲了解更多信息,您可以查看执行 bash 脚本和获取 bash 脚本有什么区别? https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-scrip非常好的答案:
差异是:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)