在bash脚本中使用ksh shebang

时间:2015-11-10 12:48:32

标签: bash

我们将执行从unix到Linux的迁移。 排版-L仅适用于ksh

我创建了以下文件:

#!/bin/ksh -u

echo $SHELL
typeset -L21 RUN_LOGL="LOG_FILE    "

通常情况下,shebang应该指出正确的解释器(ksh)。但是当我用bash方式调用脚本时:

$ . test.ksh

输出结果为:

/bin/bash

-bash: typeset: -L: invalid option

typeset: usage: typeset [-aAfFilrtux] [-p] name[=value] ...

脚本是bash方式的解释器,并且不接受typeset -L。 而如果我只是打电话

$test.ksh

它运行良好。

我们调用脚本(bash方式还是ksh方式)的重要性是否足以忽略shebang?

提前谢谢。

2 个答案:

答案 0 :(得分:8)

. test.ksh

执行脚本吗?它是sourcing脚本。

采购脚本总是忽略了shebang。 shebang仅在脚本执行时使用,如:

chmod +x test.ksh
./test.ksh

答案 1 :(得分:0)

只有在以前没有定义解释器时才使用shebang,例如:

sh myScript.sh

将始终调用您的sh,并忽略shebang。