首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中使用ksh shebang

在bash脚本中使用ksh shebang
EN

Stack Overflow用户
提问于 2015-11-10 20:48:32
回答 2查看 1.5K关注 0票数 1

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

我创建了以下文件:

代码语言:javascript
复制
#!/bin/ksh -u

echo $SHELL
typeset -L21 RUN_LOGL="LOG_FILE    "

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

代码语言:javascript
复制
$ . test.ksh

输出为:

代码语言:javascript
复制
/bin/bash

-bash: typeset: -L: invalid option

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

脚本是bash方式的解释器,不接受排版-L。而如果我简单地调用

代码语言:javascript
复制
$test.ksh

它运行得很好。

我们调用脚本的方式(bash方式或ksh方式)是否足够重要,以至于可以忽略shebang?

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2015-11-10 20:51:22

代码语言:javascript
复制
. test.ksh

不执行脚本。它是脚本。

从脚本中获取资源总是会忽略shebang。只有在执行脚本时才使用shebang,如下所示:

代码语言:javascript
复制
chmod +x test.ksh
./test.ksh
票数 9
EN

Stack Overflow用户

发布于 2015-11-10 20:52:02

只有在之前没有定义解释器的情况下,才会使用shebang,例如:

代码语言:javascript
复制
sh myScript.sh

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33630371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档