无法在 Cygwin 中将 shell 脚本作为 KornShell 脚本执行

问题描述 投票:0回答:3

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

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

现在我已经将范围缩小到“幻数”或脚本开头的任何内容,其中指定了脚本解释器路径:

即:

#!/bin/ksh

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

#!/bin/sh

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

  • mksh MirdBSD KornShell
  • 再次重击 bourne shell
  • zsh z shell

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

我知道我的解释很可能很糟糕。但话虽如此,我们将非常感谢任何帮助。

谢谢。

windows shell scripting cygwin ksh
3个回答
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

2
投票

你现在可能已经修复了它,但答案是否定的,你的 Cygwin 还不知道 ksh。

我通过使用 -P ksh 属性在命令行模式下启动 cygwin 安装程序解决了这个问题(如 http://www.ehow.com/how_8611406_install-ksh-cygwin.html 中所述)。


0
投票

您可以使用 bat 文件运行 ksh

C

© www.soinside.com 2019 - 2024. All rights reserved.