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

时间:2013-01-25 11:27:47

标签: windows shell scripting cygwin ksh

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

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

现在我把它缩小到了“魔术数字”或者脚本开头的任何内容,它指定了脚本解释器路径:

即:

#!/bin/ksh

如果我把它改为执行简单的bash就可以了,即:

#!/bin/sh

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

  • mksh MirdBSD KornShell
  • bash the bourne again shell
  • zsh z shell

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

我理解我的解释可能很简单。但话虽如此,任何帮助都会非常感激。

感谢。

4 个答案:

答案 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文件

运行ksh

C:\ cygwin \ bin \ dos2unix kshfilename.ksh

C:\ cygwin \ bin \ bash kshfilename.ksh

Running a shell script through Cygwin on Windows

答案 3 :(得分:0)

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

  1. 下载:ksh.2012-08-06.cygwin.i386.gz
  2. 通过Cygwin设置安装ksh。
    1. Execture Cygwin setup.exe
    2. 选择:从本地目录安装
    3. 选择 ksh.2012-08-06.cygwin.i386.gz 作为本地包目录enter image description here
    4. 完成Cygwin设置。
  3. 重启Cygwin。