2011-06-05 112 views
4

如何從我的應用程序設置環境變量?Mono C#環境變量設置

我不需要一個持久變量(確定在重啓後放棄)。 我只需要變量MONO_RX「倖存」我的應用程序的結束。


Environment.SetEnvironmentVariable("MONO", txt, EnvironmentVariableTarget.User); 
Environment.SetEnvironmentVariable("MONO", txt, EnvironmentVariableTarget.Process); 
Process.Start("/bin/bash", "-c MONO=" + txt + "; export MONO; echo $MONO"); 
Process.Start("/bin/bash", "-c MONO=" + txt + "; export MONO; echo $MONO \r\n"); 

sudo mono test.exe 

沒有給出錯誤,但我的控制檯應用程序 「測試」 退出後,我沒有找到$MONO

echo $MONO 

set | grep MONO 

系統:

  • 的Linux 2.6.38-8-通用PAE
  • 單JIT編譯器版本2.6.7(Debian的2.6.7-5ubuntu3)
+1

你想要一個環境變量持續時間比這個過程更長嗎?聽起來你想要一個配置設置。 – IanNorton 2011-08-18 06:36:09

回答

0

你有沒有試着用EnvironmentVariableTarget.Machine運行此。 EnvironmentVariableTarget .Process使進程在進程終止時被刪除。 。用戶特定於運行該進程的用戶。

你正在使用sudo來運行應用程序,因此「sudo echo $ Mono」會給你預期的結果,因爲那是你創建環境變量的用戶,而不是你的用戶(或者你不會使用須藤)。

以任一方式除去EnvironmentVariableTarget.Process。您正在尋找特定進程外部的訪問權限。之後,執行以下操作之一:

  • 設置機器級別的環境變量。
  • 運行應用程序爲用戶預期
+0

他試圖做的事情無法工作。與sudo無關。 – LtWorf 2016-10-03 13:26:17

1

信封變量與過程的孩子們共享。

如果您在進程中設置了一些env var,只有從它開始的進程纔會看到它們,在進程終止後,它們將永遠消失。

您可能只是想將它們設置在shell中。