我们将执行从unix到Linux的迁移。typeset -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方式的解释器,不接受排版-L。而如果我简单地调用
$test.ksh它运行得很好。
我们调用脚本的方式(bash方式或ksh方式)是否足够重要,以至于可以忽略shebang?
提前谢谢你。
发布于 2015-11-10 20:51:22
. test.ksh不执行脚本。它是脚本。
从脚本中获取资源总是会忽略shebang。只有在执行脚本时才使用shebang,如下所示:
chmod +x test.ksh
./test.ksh发布于 2015-11-10 20:52:02
只有在之前没有定义解释器的情况下,才会使用shebang,例如:
sh myScript.sh将始终调用您的sh,并忽略shebang。
https://stackoverflow.com/questions/33630371
复制相似问题