如何在 windows/cygwin 下正确设置 MinTTY 的路径?

如何在 windows/cygwin 下正确设置 MinTTY 的路径?

我创建了具有以下目标的 Windows 快捷方式:

D:\APPS\cygwin64\bin\mintty.exe /bin/env PATH=/local/bin:/usr/local/bin:$PATH /bin/bash --login -i

我期望它在路径前面添加我给定的值,但是它没有:

$ echo $PATH
/usr/local/bin:/usr/bin:/local/bin:/usr/local/bin:$PATH:/usr/lib/lapack

$PATH文本进入内容而没有扩展。

如何克服?

答案1

好吧,我知道这有点晚了,但希望它可以帮助你或其他遇到类似问题的人。

$VAR_NAME由于您正在运行 Windows 快捷方式,因此您可能只需要使用 Windows/CMD.exe 扩展的语法 ( ),而不是使用 cygwin/*nix 环境变量扩展的语法 ( %VAR_NAME%)。此外,我在下面链接了两本 Wikibooks,它们应该涵盖了您需要使用批处理文件执行的几乎所有操作,以供将来参考。

话虽如此,我本来期望你的语法也能起作用,而且我确实想象一些可以说,这是在“另一边”进行扩展的方法。如果我在处理终端启动脚本时能找到方法,我会更新此答案。

参考:

  1. 编程命令 具有大部分基本语法和基本命令
  2. Windows 批处理脚本 相当全面的参考资料

注意事项/买家自慎

cmdshell 脚本还有很多不足之处,我认为您可以轻松地在 Google 上找到一些可以让您了解所有细节的东西。我只是想提一下,没有什么可以阻止您使用“MinGW-x64”之类的东西(如果您有疑问,我建议您研究“MinGW-x64”与原始版本之间的区别;它们由不同的实体维护),或者像 Cygwin 这样的东西,您显然已经有一些使用经验,这两种东西都允许您执行sh/bash脚本。

MinGW-x64 经过简化,并且 POSIX 实现不完整,因为某些概念与 Windows 子系统不兼容,没有额外的支持(嗯,我猜是 Microsoft VC 运行时;我认为在某些情况下,至少需要使用 MinGW如果不是MinGW-x64),但我首先提到它,因为它是一个“本机”(即“快速”)的解决方案。

Cygwin 提供了其“兼容层”,.dll该兼容层提供了一个相当完整的 POSIX 环境,但代价是 (a) 一些相当大的开销(至少在某些情况下)和 (b) 具有相当复杂的额外功能,.dll必须随您使用它制作的任何软件一起提供,并且如果您将它用于您的项目并链接到兼容层,则成本/收益(取决于您的观点)会被很好地锁定在 GPL 中。

然而,另外,这个答案如果您愿意的话,可以提及 Red Hat 的 Cygwin 许可证,其中包含非 GPL 许可证条款。(当然,假设这对您和您的项目来说都是划算的。)但是,对于个人或内部 shell 脚本(即非“分布式”,因此不受 GPL 保护)来说,这很可能是一个不错的选择,而且几乎肯定比摆弄 DOS 时代产品的特性要好,因为该产品仍然停留在支持 30 多年前做出的糟糕决定上。

答案2

默认情况下,/etc/profile 将 Windows PATH 添加到/usr/local/bin:/usr/bin

你想拥有此外路径/local/bin:/usr/local/bin。这很奇怪:目录/local不存在,但/usr/local/bin无论如何它都在路径中。

但是如果您仍然希望这种路径扩展发生,我建议您在内部进行此添加~/.profile,而不是在快捷方式中。

相关内容