首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cygwin Bash.exe与mintty.exe

Cygwin Bash.exe与mintty.exe
EN

Stack Overflow用户
提问于 2014-04-12 21:43:20
回答 1查看 18.6K关注 0票数 25

我正在尝试在bash.exemintty.exe上运行Unix命令,这些命令可以在Cygwin64/bin中找到(例如,usr/bin/bash.exe)。当我尝试运行Unix命令ls时,我得到了bash: ls: command not found。但是,当我单击Cygwin终端的桌面图标,并在生成的Cygwin终端中输入ls时,像ls这样的Unix命令就可以工作了!为什么Unix命令在bash.exemintty.exe上不起作用,但在终端上却能看到单击图标后的结果?此外,bash.exemintty.exe带来的两个shell有什么不同

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-12 23:02:35

这两个程序在任何情况下都不能相互替代。Bash是一个shell,而MinTTY是一个terminal emulator。MinTTY通常在自己内部运行用户的外壳,它可能是Bash也可能不是。您通常将这两个程序一起使用。

如果您检查Cygwin的setup.exe构建的MinTTY快捷方式,您会发现它不是该程序的简单启动。它以mintty -的身份运行,告诉MinTTY将用户的外壳作为“登录”外壳运行。

这就是你遇到的问题。如果你在没有选项的情况下运行bash.exe,你只会得到带有默认配置的裸壳,这意味着它不会做像添加Cygwin /bin到你的PATH这样的事情。同样,如果您在不带选项的情况下运行mintty.exe,它也会在不带选项的情况下运行您的用户的shell。当您给mintty.exe加上破折号而不是程序名时,它会将用户的shell作为登录shell运行:bash -l,而不仅仅是bash。该选项会导致Bash在启动后立即读入一堆启动脚本,这将设置命令路径和其他更多内容。

因此,如果出于某种原因,您必须在MinTTY外部运行bash.exe,则可以使用bash -l,以便在通过mintty -运行时使行为更接近于bash.exe。但是,您将失去所有的终端仿真器功能。例如,MinTTY的复制-粘贴行为比Windows的控制台要好得多,特别是在Windows8和更早的版本上。

(Windows10的初始版本包含a much-improved console,最近的Windows Terminal附加组件进一步改进了功能,但MinTTY仍然是更强大的选项,尤其是在使用Cygwin时。)

在Cygwin命令提示符下输入man mintty,可以更全面地解释MinTTY为您做的所有事情。这个特殊的问题在the MinTTY manual pageINVOCATION部分得到了回答。

票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23031164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档