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