为什么要使用 bash 执行脚本?

为什么要使用 bash 执行脚本?

在前面的一个问题中,我被建议执行:

sudo bash start-dfs.sh

为什么不

sudo start-dfs.sh

? 我的意思是,这有什么区别呢bash

答案1

脚本任何(解释)语言,如bashpython,需要由相应语言的解释器进行“解释”。

在 Linux 上,可以通过不同的方式完成此操作:

  1. 通过在运行脚本的命令中包含语言来“要求”解释器运行该脚本:

    <language> <script>
    

    或者在你的例子中:

    sudo bash start-dfs.sh
    
  2. 脚本是可执行文件,并有权限“要求”解释器本身运行脚本内的代码。从你的例子来看:

    sudo start-dfs.sh
    

    在这种情况下,脚本必须舍邦,否则就没有信息来调用哪个解释器,例如:

    #!/bin/bash
    

    或者:

    #!/usr/bin/env python
    

笔记

  • 如果使用第一个选项,则命令中的语言信息总是否决可能的shebang,无论脚本是否可执行。
  • 脚本的扩展名(.sh.py)清楚地表明了它是什么类型的脚本,但没有任何作用在脚本的执行中,与在 Windows 中不同。

相关内容