【发布时间】:2015-10-25 01:25:21
【问题描述】:
我有以下调用 cygwin bash 脚本的 cmd 脚本:
C:\cygwin\bin\bash -l /D/Temp/testScript/cygScript.sh
echo back in cmd.
exit
bash 脚本很简单:
#!/bin/bash
echo Hello World!
read
调用部分运行良好 - bash shell 登录,按预期回显,按预期读取,控制按预期传递回 cmd。
但是 cmd 不会退出。如果我从命令窗口运行它很好,但我将通过双击 cmd 文件或从 RUN 等启动它来调用它。
我看到的输出:
D:\Temp\testScript>C:\cygwin\bin\bash -l /D/Temp/testScript/shellScript.sh
Hello World!
D:\Temp\testScript>echo back in cmd.
back in cmd.
D:\Temp\testScript>exit
如何让 cmd 退出?
发现问题 - bash 太多
我想我发现了问题 - 可能在我的 .bashrc 和我在 cygwin 登录期间加载的其他文件中。如果我更改主 cmd 行以删除登录标志),它会按预期工作 - 一切都会关闭。
C:\cygwin\bin\bash /D/Temp/testScript/cygScript.sh
但后来我把标志放回去了:
C:\cygwin\bin\bash -l /D/Temp/testScript/cygScript.sh
然后再次运行。我看到了输出Hello World!,它告诉我控制是用bash,我检查了任务管理器。 四个 bash.exe 实例被创建。然后我按 ENTER 并看到输出 back in cmd. 向我显示控制权返回到 cmd。现在任务管理器向我显示 三个 bash.exe 实例仍然存在。
所以,我的登录脚本中的某些内容正在创建额外的 bash shell。所以不是你,是我。
【问题讨论】:
-
您希望 cygwin 终端在您运行命令后关闭 - 通过双击文件?
-
不,不是这样。我编辑了我的问题以提供更多信息。 bash shell 正在做它的事情并退出。控制将返回到 cmd 脚本并且不退出。
exit命令没有达到我的预期(关闭 cmd 窗口)。 -
为什么这被否决了?如果我可以做些什么来改进它,请告诉我。请不要在没有反馈的情况下投反对票。
-
所以“cmd 脚本”或“cmd 文件”是指带有
.bat或.cmd扩展名的文件,您通过双击或“运行...”运行它? ? -
请不要edit您的问题包含答案。你应该写一个单独的答案 - Can I answer my own question?
标签: windows bash shell cmd cygwin