我很少接触shell脚本,我们有另一个部门编写它们,所以我对编写它们有一定的了解,但没有经验。但是,他们对我的问题似乎都毫无用处。
我试图执行一些KornShell(ksh)脚本在基于Windows的机器上使用Cygwin-我们使用这些来启动我们的Oracle服务器,现在它根本不会执行。我曾经能够在我的旧机器上很好地执行这些完全相同的脚本。
现在我已经把它缩小到“幻数”或脚本开头的任何东西,它指定了脚本解释器的路径:
即:#!/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
我知道我的解释可能很蹩脚。但话虽如此,任何帮助将非常感谢。
谢谢.
5条答案
按热度按时间bvjxkvbb1#
MirBSD Korn shell的名字是
mksh
。您可以验证这一点,并通过键入以下命令查找正确的路径或者如果你没有
which
,或者如果也失败了,检查
/etc/shells
,它应该列出系统上所有有效的shell:您需要将完整路径放在
#!
行之后。它可能是/bin/mksh
,所以你的行需要看起来像这样:gab6jxml2#
你现在可能已经修复了它,但答案是否定的,你的Cygwin(还)不知道ksh。
我通过在命令行模式下使用-P ksh属性(如http://www.ehow.com/how_8611406_install-ksh-cygwin.html中所述)启动cygwin安装程序解决了这个问题。
pkwftd7m3#
您可以使用bat文件运行ksh
C:\cygwin\bin\dos2unix kshfilename.ksh
C:\cygwin\bin\bash kshfilename.ksh
Running a shell script through Cygwin on Windows
tkqqtvp14#
通过以下步骤将KornShell(ksh)安装到Cygwin中:
1.下载:ksh.2012-08-06.cygwin.i386.gz
1.通过Cygwin安装ksh。
1.外展Cygwin setup.exe
1.选择:* 从本地目录安装 *
1.选择 ksh.2012-08-06.cygwin.i386.gz 作为 * 本地包目录 *。
1.完整的Cygwin设置。
1.重新启动Cygwin。
r6hnlfcb5#
我意识到这是非常延迟的,但如果其他人有同样的问题,我有,我使用了Asurya描述的相同过程,通过试验和错误得到了一些额外的澄清/提示:
1.安装cygwin
1.打开Windows PowerShell
1.导航到Cygwin的安装位置(对我来说是C:\cygwin64)
1.运行带有附加标志“-P ksh”的Cygwin安装程序exe(我运行:setup-x86_64.exe -P ksh)。
1.您也可以通过在该调用后附加--no-admin来执行单用户安装(不需要管理员权限):setup-x86_64.exe -P ksh --no-admin
1.在Cygwin中使用以下语法(不带引号)运行代码:“mksh filename.ksh”或“ksh filename.ksh”-这两个是等效的,因为ksh系统文件只是链接到bin文件夹中的mksh.exe文件。
1.除了上面的语法,你还可以确保正确的shebang行位于文件的顶部(例如,#!/bin/ksh),并通过简单地调用(无引号)“./filename.ksh”来运行代码。
额外的笔记/我发现有用的东西: