2015-10-17 104 views
-1

如何在PowerShell中設置一個環境變量,使其在子MSYS2 bash進程中可見?下面是一個PowerShell會話展示我的嘗試:將環境變量從PowerShell傳遞到MSYS2 bash

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正確的方式?或者我該如何解決這個問題?

+0

慶典之前,你需要導出ABCD:出口ABCD –

+0

OK,在PowerShell中,我嘗試了「出口ABCD:出口ABCD」和類似的命令,我只是得到錯誤消息「導出:術語'導出'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱 檢查名稱的拼寫,或者路徑是包括,驗證路徑是否正確,然後重試。「 –

回答

1

這裏的問題是Powershell在調用Bash之前擴展了$ ABCD。解決的辦法是這樣寫的命令,用反引號作爲轉義字符:

usr/bin/bash -l -c "env | grep ABCD; echo Value: `$ABCD"