我想知道我们是否需要添加 shell 标题:
#!/bin/bash
在脚本 上second.sh
,它仅定义一个函数,并从另一个脚本 调用script.sh
。
例如,script.sh
包含
#!/bin/bash
source second.sh
func1 "make amerika great again "
echo $I_AM_SAY
并且second.sh
仅包含从第一个脚本调用的函数:
X=soon
function func1 {
fun=$1
I_AM_SAY=$fun$X
}
我们是否需要定义second.sh
为:
#!/bin/bash
X=soon
function func1 {
fun=$1
I_AM_SAY=$fun$X
}
或作为:
#!/usr/bin/env bash
X=soon
function func1 {
fun=$1
I_AM_SAY=$fun$X
}
答案1
不,你不需要 shebang 行:正在运行的 shell 直接获取脚本,它不会启动一个新的 shell(这是获取脚本的全部意义),因此它和内核都不需要知道哪个 shell用于运行它。
如果您想完全阻止second.sh
脚本被调用,您可以添加
#!/usr/bin/false
舍邦线。
答案2
如果您仅使用source
另一个脚本中的文件,则 hashbang 不会被解释(它只是那里的注释)。不过,它可以作为读者的注释,提醒他们该脚本使用特定于特定 shell 的功能。当然,您也应该在注释中以纯文本形式提及这一点,因为无论如何,您确实在文件顶部附近的注释中对脚本进行了描述,对吧?