Mono C#环境设置变量

时间:2011-06-05 19:51:01

标签: c# mono environment-variables

如何从我的应用程序中设置环境变量?

我不需要持久性变量(重启后可以丢弃)。 我只需要变量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

没有错误,但在我的控制台应用程序“test”退出后,我找不到$MONO

echo $MONO

set | grep MONO

系统:

  • linux 2.6.38-8-generic PAE
  • Mono JIT编译器版本2.6.7(Debian 2.6.7-5ubuntu3)

2 个答案:

答案 0 :(得分:1)

Env变量与流程的子项共享。

如果您在流程中设置了一些env var,那么只有从它开始的流程才能看到它们,在流程终止后,它们将永远消失。

您可能只想在shell中设置它们。

答案 1 :(得分:0)

您是否尝试过使用EnvironmentVariableTarget.Machine运行此功能。 EnvironmentVariableTarget .Process导致在进程终止时删除条目。 .User特定于运行该进程的用户。

你正在使用sudo来运行应用程序,因此“sudo echo $ Mono”会给你预期的结果,因为那是你创建环境变量的用户,而不是你的用户(或者你不会使用sudo) )。

以任一方式删除EnvironmentVariableTarget.Process。您正在寻找特定流程外部的访问权限。之后,执行以下操作之一:

  • 制作机器级环境变量。
  • 以用户期望的方式运行您的应用程序