将环境变量从 powershell 传递到 MSYS2 bash
Passing environment variables from powershell to MSYS2 bash
如何在 PowerShell 中设置环境变量,使其在子 MSYS2 bash 进程中可见?这是一个 PowerShell 会话,展示了我的尝试:
PS D:\msys64> $env:ABCD = "foo"
PS D:\msys64> usr\bin\bash -l -c "env | grep ABCD; echo Value: $ABCD"
ABCD=foo
Value:
如您所见,环境变量在 env
的输出中可见,但作为 bash shell 变量不可用,这意味着它不会真的很管用。
上述命令的预期输出为:
ABCD=foo
Value: foo
将环境变量传递给 MSYS2 的正确方法是什么?或者我该如何解决这个问题?
这里的问题是 Powershell 在调用 Bash 之前扩展了 $ABCD。解决办法是这样写命令,使用反引号作为转义字符:
usr/bin/bash -l -c "env | grep ABCD; echo Value: `$ABCD"
如何在 PowerShell 中设置环境变量,使其在子 MSYS2 bash 进程中可见?这是一个 PowerShell 会话,展示了我的尝试:
PS D:\msys64> $env:ABCD = "foo"
PS D:\msys64> usr\bin\bash -l -c "env | grep ABCD; echo Value: $ABCD"
ABCD=foo
Value:
如您所见,环境变量在 env
的输出中可见,但作为 bash shell 变量不可用,这意味着它不会真的很管用。
上述命令的预期输出为:
ABCD=foo
Value: foo
将环境变量传递给 MSYS2 的正确方法是什么?或者我该如何解决这个问题?
这里的问题是 Powershell 在调用 Bash 之前扩展了 $ABCD。解决办法是这样写命令,使用反引号作为转义字符:
usr/bin/bash -l -c "env | grep ABCD; echo Value: `$ABCD"