Hello
I need help to understand how to pass environment variables.
I use a test script based on one found on internet : https://gist.github.com/nickjacob/9909574#gistcomment-1714346
Here is my script :
[Unit]
Description=Demonstrate Bash
[Service]
User=user_install
PermissionsStartOnly=true
ExecStartPre=".................................."
ExecStart=/usr/bin/echo "MYVAR = ${MYVAR}"
ExecStop=
[Install]
WantedBy=multi-user.target
The following prestart command does not work ( print null value )
#Run as root
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment MYVAR=$WINDOWMANAGER"
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment MYVAR=$AUDIODRIVER"
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment MYVAR=$LOG_USER"
The following prestart command are OK
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment MYVAR=$USER"
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment MYVAR=$LOGNAME"
ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment MYVAR=1234"
All my own variables (LOGNAME,[FONT=monospace]LOG_USER, … ) are exported and they [/FONT]are set by sourcing the file ‘system_common_general_env_var’ in /etc/profile.local
:~> echo $USER
user_install
:~> echo $WINDOWMANAGER
/usr/bin/startplasma-x11
:~> echo $AUDIODRIVER
pulseaudio
:~> echo $LOGNAME
user_install
:~> echo $LOG_USER
[FONT=monospace]user_install[/FONT]
Result with string ‘1234’
:~> sudo systemctl status test_unit.service
● test_unit.service - Demonstrate Bash
Loaded: loaded (/etc/systemd/system/test_unit.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Nov 24 22:48:00 15-3-G731GV systemd[1]: Starting Demonstrate Bash...
Nov 24 22:48:00 15-3-G731GV systemd[1]: Started Demonstrate Bash.
Nov 24 22:48:00 15-3-G731GV echo[11374]: MYVAR = 1234
Nov 24 22:48:00 15-3-G731GV systemd[1]: test_unit.service: Succeeded.
Result with variable $LOG_USER
[FONT=monospace]:~> sudo systemctl status test_unit.service
● test_unit.service - Demonstrate Bash
Loaded: loaded (/etc/systemd/system/test_unit.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Nov 24 22:44:34 15-3-G731GV systemd[1]: Starting Demonstrate Bash...
Nov 24 22:44:34 15-3-G731GV systemd[1]: Started Demonstrate Bash.
Nov 24 22:44:34 15-3-G731GV echo[11210]: MYVAR = user_install
Nov 24 22:44:34 15-3-G731GV systemd[1]: test_unit.service: Succeeded.[/FONT]
Result with variable [FONT=monospace]$WINDOWMANAGER
[/FONT]
[FONT=monospace]:~>[/FONT][FONT=monospace]sudo systemctl status test_unit.service
● test_unit.service - Demonstrate Bash
Loaded: loaded (/etc/systemd/system/test_unit.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Nov 24 22:42:56 15-3-G731GV systemd[1]: Starting Demonstrate Bash...
Nov 24 22:42:56 15-3-G731GV systemd[1]: Started Demonstrate Bash.
Nov 24 22:42:56 15-3-G731GV echo[10766]: [/FONT][FONT=monospace][FONT=monospace]MYVAR =
Nov 24 22:42:56 15-3-G731GV systemd[1]: test_unit.service: Succeeded.[/FONT][/FONT]
Any comment is welcome