提问者:小点点

无法在Cygwin中执行外壳脚本作为KornShell脚本


我很少接触shell脚本,我们有另一个部门编写它们,所以我对编写它们有了解,但没有经验。然而,它们在我的问题上似乎都很没用。

我正在尝试使用Cygwin在基于Windows的机器上执行一些KornShell(ksh)脚本-我们使用这些来启动我们的Oracle WebLogic服务器,现在它根本不会执行。我曾经能够在我的旧机器上很好地执行这些完全相同的脚本。

现在我已经将其缩小到“神奇数字”或脚本开头的任何它指定脚本解释器路径的事实:

即:

#! /bin/ksh

如果我将其更改为作为简单的bash执行,它就可以工作,即:

#! /bin/sh

我检查了为cygwin安装的软件包-现在我安装的shell是:

  • mksh MirdBSD KornShell
  • 再次重击伯恩贝壳
  • zsh z shell

我应该期望在我的cygwin/bin目录中看到一个ksh. exe吗?有一个系统文件“ksh”,我假设它以某种方式将其与其他shell exe之一相关联,例如mksh.exe

我知道我的解释很可能是无稽之谈。但话虽如此,任何帮助都将不胜感激。

谢谢。


共3个答案

匿名用户

我相信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运行外壳脚本