![在 Windows cmd.exe 中运行 sh.exe:未找到命令](https://linux22.com/image/1425541/%E5%9C%A8%20Windows%20cmd.exe%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20sh.exe%EF%BC%9A%E6%9C%AA%E6%89%BE%E5%88%B0%E5%91%BD%E4%BB%A4.png)
由于某种原因,我需要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
错误。我尝试将(和必要的库)复制到同一个文件夹,但看不到它(我也尝试复制,但结果是一样的)。gawk
gawk.exe
sh.exe
gawk-4.1.1.exe
我怀疑sh.exe
寻找一些环境变量,然后指向依赖项的位置(例如gawk.exe
),但我不确定它是什么环境变量以及是否sh.exe
尊重普通的 Windows 环境变量。
所以我的问题是,我可以sh.exe
在 Windows 下运行吗cmd
(最终直接在 Windows 中运行)?如果可以,那么我该如何解决上面描述的问题?
答案1
当写这个问题时,一些想法突然出现在我的脑海里,其中之一是“如果缺少一个环境变量,那么当我启动它时,cygwin 肯定会设置它。”。
我在文件夹中对cygwin\bin
和进行了文本搜索,第二个搜索将我指向文件。结果发现 所需的路径存储在普通的旧环境变量中。cygwin/bin
cygwin
.bashrc
sh.exe
PATH
简而言之,如果我执行:
SET PATH=%PATH%;.
在 中cmd
,然后我可以sh.exe
使用放在同一文件夹中的可依赖项来运行(稍后我可能需要.
用某个特定路径替换,但现在这样就足够了)。稍后我可能需要将其移动到批处理文件中。