2

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

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

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

IE:

#!/bin/ksh

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

#!/bin/sh

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

  • mksh MirdBSD KornShell
  • 再次 bash the bourne shell
  • zsh z 外壳

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

我明白我的解释很可能是错误的。但话虽如此,任何帮助将不胜感激。

谢谢。

4

4 回答 4

2

I believe the MirBSD korn shell is called mksh. You can verify this and look for the correct path by typing

% which mksh
% which ksh

or if you have no which,

% type -p mksh
% type -p ksh

or if that fails too, check /etc/shells which should list all valid shells on a system:

% grep ksh /etc/shells

You need to put the full path after the #! line. It will probably be /bin/mksh, so your line needs to look like:

#!/bin/mksh
于 2013-01-25T11:46:26.507 回答
2

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

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

于 2013-10-21T14:43:08.540 回答
0

您可以使用 bat 文件运行 ksh

C:\cygwin\bin\dos2unix kshfilename.ksh

C:\cygwin\bin\bash kshfilename.ksh

在 Windows 上通过 Cygwin 运行 shell 脚本

于 2014-01-09T16:13:06.263 回答
0

通过以下过程将 KornShell (ksh) 安装到 Cygwin 中:

  1. 下载:ksh.2012-08-06.cygwin.i386.gz
  2. 通过 Cygwin 安装程序安装 ksh。
    1. 执行Cygwin setup.exe
    2. 选择:从本地目录安装
    3. 选择ksh.2012-08-06.cygwin.i386.gz作为Local Package Directory在此处输入图像描述
    4. 完成 Cygwin 设置。
  3. 重新启动 Cygwin。
于 2014-01-11T16:31:44.630 回答