Set environment variable globally
Andrew Martin
amartin at xes-inc.com
Thu Apr 6 20:52:58 UTC 2017
----- Original Message -----
> From: "J Fernyhough" <j.fernyhough at gmail.com>
> To: "amartin" <amartin at xes-inc.com>
> Cc: "ubuntu-devel-discuss" <ubuntu-devel-discuss at lists.ubuntu.com>
> Sent: Thursday, April 6, 2017 12:42:05 PM
> Subject: Re: Set environment variable globally
> On 06/04/17 16:36, Andrew Martin wrote:
>>
>> It seems like that would have some performance impact. Setting TZ in the
>> /etc/environment file doesn't appear to be used by upstart or systemd, and
>> therefore apache2 doesn't use it either. How can I make it be used for services
>> started by either init system?
>>
>
> Not sure about upstart, but systemd should be straightforward enough.
> You can add environment variables through editing the unit file
> directly, or possibly better by:
>
> 1) Adding a conf file, e.g. in
> /etc/systemd/system/apache2.service.d/tz.conf:
>
> [Service]
> Environment="TZ=:/etc/localtime"
>
> 2) globally for all units in /etc/systemd/system.conf, or e.g.
> /etc/systemd/system.conf.d/tz.conf:
>
> [Manager]
> DefaultEnvironment="TZ=:/etc/localtime"
>
>
> You'll need to do a daemon-reload and a service restart to pick up the
> changes, but it should be there. Terrible, hacky, one-liner to check:
>
> for p in $(pgrep -d" " apache2); do echo -e "$p:\n$(cat
> /proc/$p/environ)\n"; done
>
> J
Thanks, this looks like it should work well. I can over most cases with
the following:
add this to /etc/systemd/system.conf.d/tz.conf for services:
[Manager]
DefaultEnvironment="TZ=:/etc/localtime"
add this to /etc/profile.d/tz.sh for login shells:
export TZ=:/etc/localtime
add this to /etc/bash.bashrc for interactive non-login shells:
export TZ=:/etc/localtime
add this to /etc/environment as a catch-all:
TZ=:/etc/localtime
Andrew
More information about the Ubuntu-devel-discuss
mailing list