在前面的一个问题中,我被建议执行:
sudo bash start-dfs.sh
为什么不
sudo start-dfs.sh
? 我的意思是,这有什么区别呢bash
?
答案1
脚本任何(解释)语言,如bash
或python
,需要由相应语言的解释器进行“解释”。
在 Linux 上,可以通过不同的方式完成此操作:
通过在运行脚本的命令中包含语言来“要求”解释器运行该脚本:
<language> <script>
或者在你的例子中:
sudo bash start-dfs.sh
脚本是可执行文件,并有权限“要求”解释器本身运行脚本内的代码。从你的例子来看:
sudo start-dfs.sh
在这种情况下,脚本必须从舍邦,否则就没有信息来调用哪个解释器,例如:
#!/bin/bash
或者:
#!/usr/bin/env python
笔记
- 如果使用第一个选项,则命令中的语言信息总是否决可能的shebang,无论脚本是否可执行。
- 脚本的扩展名(
.sh
等.py
)清楚地表明了它是什么类型的脚本,但没有任何作用在脚本的执行中,与在 Windows 中不同。