如何从我的应用程序中设置环境变量?
我不需要持久性变量(重启后可以丢弃)。 我只需要变量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
系统:
答案 0 :(得分:1)
Env变量与流程的子项共享。
如果您在流程中设置了一些env var,那么只有从它开始的流程才能看到它们,在流程终止后,它们将永远消失。
您可能只想在shell中设置它们。
答案 1 :(得分:0)
您是否尝试过使用EnvironmentVariableTarget.Machine运行此功能。 EnvironmentVariableTarget .Process导致在进程终止时删除条目。 .User特定于运行该进程的用户。
你正在使用sudo来运行应用程序,因此“sudo echo $ Mono”会给你预期的结果,因为那是你创建环境变量的用户,而不是你的用户(或者你不会使用sudo) )。
以任一方式删除EnvironmentVariableTarget.Process。您正在寻找特定流程外部的访问权限。之后,执行以下操作之一: