@@ -55,8 +55,43 @@ rm -f $SYSTEMD_SYSTEM_CONF $SYSTEMD_USER_CONF $ENVD_CONF $PROFILE_CONF
5555echo "[Manager]" >> $SYSTEMD_SYSTEM_CONF
5656echo "[Manager]" >> $SYSTEMD_USER_CONF
5757for proxy in "http_proxy=proxy1" "https_proxy=sproxy1" "no_proxy=no1,no2"; do
58- printf "DefaultEnvironment=\"%s\"\n" "$proxy" >> $SYSTEMD_SYSTEM_CONF
59- printf "DefaultEnvironment=\"%s\"\n" "$proxy" >> $SYSTEMD_USER_CONF
58+ systemd_proxy="${proxy//%/%%}"
59+ printf "DefaultEnvironment=\"%s\"\n" "$systemd_proxy" >> $SYSTEMD_SYSTEM_CONF
60+ printf "DefaultEnvironment=\"%s\"\n" "$systemd_proxy" >> $SYSTEMD_USER_CONF
61+ printf "%s\n" "$proxy" >> $ENVD_CONF
62+ printf "export %s\n" "$proxy" >> $PROFILE_CONF
63+ done
64+
65+ systemctl daemon-reload
66+ ` ,
67+ },
68+ {
69+ name : "percent sign in proxy value is escaped for systemd" ,
70+ args : args {
71+ isWSL : false ,
72+ envs : []env {
73+ {
74+ name : "http_proxy" ,
75+ value : "http://user%40example.com@proxy:3128" ,
76+ },
77+ },
78+ },
79+ want : `#!/bin/bash
80+
81+ SYSTEMD_SYSTEM_CONF=/etc/systemd/system.conf.d/default-env.conf
82+ SYSTEMD_USER_CONF=/etc/systemd/user.conf.d/default-env.conf
83+ ENVD_CONF=/etc/environment.d/default-env.conf
84+ PROFILE_CONF=/etc/profile.d/default-env.sh
85+
86+ mkdir -p /etc/profile.d /etc/environment.d /etc/systemd/system.conf.d/ /etc/systemd/user.conf.d/
87+ rm -f $SYSTEMD_SYSTEM_CONF $SYSTEMD_USER_CONF $ENVD_CONF $PROFILE_CONF
88+
89+ echo "[Manager]" >> $SYSTEMD_SYSTEM_CONF
90+ echo "[Manager]" >> $SYSTEMD_USER_CONF
91+ for proxy in "http_proxy=http://user%40example.com@proxy:3128"; do
92+ systemd_proxy="${proxy//%/%%}"
93+ printf "DefaultEnvironment=\"%s\"\n" "$systemd_proxy" >> $SYSTEMD_SYSTEM_CONF
94+ printf "DefaultEnvironment=\"%s\"\n" "$systemd_proxy" >> $SYSTEMD_USER_CONF
6095 printf "%s\n" "$proxy" >> $ENVD_CONF
6196 printf "export %s\n" "$proxy" >> $PROFILE_CONF
6297done
0 commit comments