我试图在bash.exe和(例如,usr/bin/bash.exe)中mintty.exe找到和运行Unix命令Cygwin64/bin.当我尝试运行Unix命令时ls,我得到了bash: ls: command not found.但是,当我点击Cygwin终端的桌面图标,并进入ls生成的Cygwin终端时,Unix命令就像ls工作一样!为什么Unix命令不能在工作bash.exe和mintty.exe,但在终端上的结果,从点击图标?此外,就是两个弹所带来的差异bash.exe和mintty.exe?
War*_*ung 36
这两个计划绝不是彼此的替代品.Bash是一个shell,MinTTY是一个终端模拟器.MinTTY通常在自己内部运行用户的shell,可能是也可能不是Bash.也就是说,您通常一起使用这两个程序.
如果你检查Cygwin setup.exe构建的MinTTY快捷方式,你会发现它不是一个简单的程序启动.它运行它mintty -,告诉MinTTY将用户的shell作为"登录"shell运行.
这是你遇到的问题.如果您在bash.exe没有选项的情况下运行,那么您只需使用其默认配置获取裸shell,这意味着它不会执行诸如将Cygwin添加/bin到您的内容之类的操作PATH.同样,如果你在mintty.exe没有选项的情况下运行,它会运行你的用户的shell而没有选项.当您使用破折号mintty.exe而不是程序名时,它会将您的用户shell作为登录shell运行:bash -l而不仅仅是bash.该选项使Bash在启动后立即读入一堆启动脚本,这将设置命令PATH以及更多.
因此,如果bash.exe由于某种原因你必须在MinTTY之外运行,你可以说bash -l让行为更接近于bash.exe运行时的行为mintty -.但是,您将失去所有终端仿真器功能.MinTTY具有比Windows控制台更好的复制粘贴行为,例如,特别是在Windows 8及更早版本上.
(Windows 10包括一个大大改进的控制台,但是MinTTY仍然更好,恕我直言,特别是在与Cygwin合作时.)
man mintty在Cygwin命令提示符处说,以便更全面地解释MinTTY为您所做的所有事情.在MinTTY手册页的INVOCATION部分回答了这个特殊问题.
| 归档时间: |
|
| 查看次数: |
15368 次 |
| 最近记录: |