2013-02-27 74 views
2

可以在执行escript脚本时设置环境变量,以便环境变量可以被在相同环境中执行的其他应用程序读取(实际上是否存在与bash命令在escript或Erlang中可用的export)?如何在escript或Erlang中设置环境变量

+0

进程不能影响其父进程或父进程的其他子进程的环境。如果你想修改由脚本启动的进程的环境(通过'fork'或类似的东西),可能有类似'setenv'的东西。 – chepner 2013-02-27 15:34:40

+0

有道理。请把它作为答案,我会接受它,如果没有别的出现。 Erlang或escript代码无法产生新的系统进程(通过'fork'或类似的),因为它本身在VM(Erlang虚拟机)中执行。我在想,OTP(Erlang库)可能会有一个特殊的系统调用来做到这一点,但找不到任何东西。 – Amiramix 2013-02-27 15:43:59

+2

您可以使用[open_port/2](http://www.erlang.org/doc/man/erlang.html#open_port-2)来产生进程。这些进程将会看到你使用[os:putenv/2](http://www.erlang.org/doc/man/os.html#putenv-2)对环境所做的任何更改,以及'env'选项到'open_port'。 – legoscia 2013-02-27 16:16:45

回答

2

进程不能影响父进程或其父进程的其他子进程的环境。

如果您想修改脚本启动的进程的环境(通过fork或类似的方式,虽然OP通知我这不支持),但可能有类似setenv可用。

+0

澄清,我是正确的,改变用户的配置文件(例如.bash_profile),并添加环境变量并加载它(与源命令),而父母最大的OTP进程仍然有效将不会看到一个新的孩子OTP过程的过程? – gextra 2013-06-04 22:54:59