2011-06-05 90 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中。