在 Windows cmd.exe 中运行 sh.exe:未找到命令

在 Windows cmd.exe 中运行 sh.exe:未找到命令

由于某种原因,我需要sh在 Windows 下运行一个(希望是简单的)文件,并且能够从另一个应用程序执行此操作。我可以使用 cygwin 来做到这一点,但出于各种原因,我需要此操作能够在另一台机器上轻松重现(在另一台机器上安装 cygwin 是不可能的)。

第一个合乎逻辑的步骤是复制sh.exe到另一个位置并尝试在 Windows 中运行它cmd。我收到了一些“缺少库”错误,但复制后:

  • cyggcc_s-1.dll
  • cygreadline7.dll
  • cygncursesw-10.dll
  • cygiconv-2.dll
  • cygintl-8.dll
  • cygwin1.dll

我可以跑sh.exe进来cmd

sh我尝试用这个副本运行文件,但现在出现缺少的sh.exe错误。我尝试将(和必要的库)复制到同一个文件夹,但看不到它(我也尝试复制,但结果是一样的)。gawkgawk.exesh.exegawk-4.1.1.exe

我怀疑sh.exe寻找一些环境变量,然后指向依赖项的位置(例如gawk.exe),但我不确定它是什么环境变量以及是否sh.exe尊重普通的 Windows 环境变量。

所以我的问题是,我可以sh.exe在 Windows 下运行吗cmd(最终直接在 Windows 中运行)?如果可以,那么我该如何解决上面描述的问题?

答案1

当写这个问题时,一些想法突然出现在我的脑海里,其中之一是“如果缺少一个环境变量,那么当我启动它时,cygwin 肯定会设置它。”。

我在文件夹中对cygwin\bin和进行了文本搜索,第二个搜索将我指向文件。结果发现 所需的路径存储在普通的旧环境变量中。cygwin/bincygwin.bashrcsh.exePATH

简而言之,如果我执行:

SET PATH=%PATH%;.

在 中cmd,然后我可以sh.exe使用放在同一文件夹中的可依赖项来运行(稍后我可能需要.用某个特定路径替换,但现在这样就足够了)。稍后我可能需要将其移动到批处理文件中。

相关内容