Robert Klemme
4/15/2008 9:37:00 PM
On 15.04.2008 23:24, Ian Peters-campbell wrote:
> Robert Klemme wrote:
>> On 12.04.2008 16:23, Marc Heiler wrote:
>>> I believe something like
>>> ENV['foo'] = 'bar'
>>> is enough.
>> This is not what the OP asked for IIRC. He wanted to modify the
>> environment of a process started from his Ruby program not the program's
>> own environment. This question was likely inspired by the POSIX C
>> function /execle/.
>>
>>> You can try it, compile a small GNU configure program via ruby
>>> ENV['CFLAGS'] = 'O2'
>>> should work, I am quite confident that it will work.
>> It will likely work but also affect the program's own environment as
>> well as that of all subsequent started sub programs.
>>
>> Kind regards
>>
>> robert
>
> Yes, apologies if my original question was not clear. I have a Ruby
> script which starts a new session D-Bus, and then starts two other
> applications which need to be connected to this new D-Bus. I have
> control over the source code of one of these applications, and so can
> order it to connect to a bus whose address I pass to it at startup. The
> second application is effectively a black box though...I can only
> control whether it connects to what it believes to be the system or
> session bus.
>
> Thus, I need a way to clobber its DBUS_SESSION_BUS_ADDRESS at startup.
> I am already setting the ENV value on the parent process, but it is not
> passing the modified environment to the process launched via exec().
Are you sure?
robert@fussel ~
$ echo $FOO
robert@fussel ~
$ ruby -e 'ENV["FOO"]="bar";exec("bash", "-c", "echo \$FOO")'
bar
robert@fussel ~
$ echo $FOO
> So...I am looking for a way to push an environment to the "black box"
> process while still managing to retain the PID in the parent (as I still
> need to be able to signal the "black box."
>
> I hope that is more clear, and any help that people can provide would be
> appreciated :)
It was pretty clear to me and I believe I provided a solution already
(see my earlier posting).
Kind regards
robert