为什么 Windows 上的 mintty 中的 $PATH 有两种不同的格式?

为什么 Windows 上的 mintty 中的 $PATH 有两种不同的格式?

我尝试node在 bash 脚本中对当前 PATH 进行少量内联字符串操作(在mintty.exeGitHub Windows Action Runner 中),但效果不如预期。我在桌面上的 MSYS2 终端中重现了这个问题,这样更容易将其简化为最简单的示例。


如果我运行echo $PATH,我会得到/c/...:...我期望的路径(类似unix的正斜杠,冒号):

camer@QUASAR MINGW64 ~
$ echo $PATH
/c/...:/...

如果混入另一个字符串,一切也都会按预期工作:

camer@QUASAR MINGW64 ~
$ echo "console.log('$PATH')"
console.log('/c/...:/...')

但是当我将该字符串作为-e节点的选项时,它会恢复为 Windows 样式路径。请注意,这实际上并没有运行,因为反斜杠扰乱了 Node 对字符串的解释。它对第一个字符串出错,\u因为它认为它是 unicode 字符的开头。除其他原因外,这证实了 $PATH 格式不正确。

camer@QUASAR MINGW64 ~
$ node -e "console.log('$PATH')"
[eval]:1
console.log('C:\...')

我无论如何也想不通为什么……

当我不期望的时候,Windows 样式的路径出现了

即使我将已知工作的输出包装起来echo ...node -e "..."它也会把它弄乱。

不同的路径回显,Windows 风格

相关内容