我很少接触shell脚本,我们有另一个部门编写它们,所以我对编写它们有所了解,但没有经验。然而,在我的问题上,它们似乎都毫无用处。
我正在尝试使用Cygwin在基于Windows的机器上执行一些KornShell(ksh)脚本 - 我们使用它们来启动我们的Oracle WebLogic服务器,现在它根本就不会执行。我曾经能够在我的旧机器上执行这些完全相同的脚本。
现在我把它缩小到了“魔术数字”或者脚本开头的任何内容,它指定了脚本解释器路径:
即:
#!/bin/ksh
如果我把它改为执行简单的bash就可以了,即:
#!/bin/sh
我检查了为cygwin安装的软件包 - 现在我安装的shell是:
我应该期望在我的cygwin / bin目录中看到ksh.exe吗?有一个系统文件'ksh',我假设它以某种方式将其与其他一个shell exes关联,如mksh.exe
我理解我的解释可能很简单。但话虽如此,任何帮助都会非常感激。
感谢。
答案 0 :(得分:2)
我相信MirBSD korn shell被称为mksh
。您可以通过键入
% which mksh
% which ksh
或者如果您没有which
,
% type -p mksh
% type -p ksh
或者如果失败,请选中/etc/shells
,它应该列出系统上所有有效的shell:
% grep ksh /etc/shells
您需要在#!
行后面填写完整路径。它可能是/bin/mksh
,所以你的行需要看起来像:
#!/bin/mksh
答案 1 :(得分:2)
你现在可能已经修好了,但答案是否定的,你的Cygwin还没有(还)知道ksh。
我通过在命令行模式下使用-P ksh属性启动cygwin设置解决了这个问题(如http://www.ehow.com/how_8611406_install-ksh-cygwin.html中所述)。
答案 2 :(得分:0)
您可以使用bat文件
运行kshC:\ cygwin \ bin \ dos2unix kshfilename.ksh
C:\ cygwin \ bin \ bash kshfilename.ksh
答案 3 :(得分:0)
通过以下过程将KornShell(ksh)安装到Cygwin中: