On Ubuntu 16.04, I do not like the WiFi to be enable automatically on OS startups. Inspired by How can I keep a wireless card's radio powered off by default? , I write a silenceWiFi.service as
[Unit]
Description=Disable Wi-Fi on startup
Before=NetworkManager.service
[Service]
Type=oneshot
ExecStart=/etc/default/silenceWiFi
[Install]
WantedBy=multi-user.target
with /etc/default/silenceWiFi only the following simple lines
#!/bin/sh
/bin/sed -i -re "s/^(WirelessEnabled=).*\$/\1false/" /var/lib/NetworkManager/NetworkManager.state
It works as expected.
However, If I change the line ExecStart in silenceWiFi.service to be
ExecStart=/bin/sed -i -re '\"s/^(WirelessEnabled=).*\\$/\\1false/\"' /var/lib/NetworkManager/NetworkManager.state
there are always errors with the service
sudo systemctl status silenceWiFi.service
will produce the following messages
● silenceWiFi.service - Disable Wi-Fi on startup
Loaded: loaded (/lib/systemd/system/silenceWiFi.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2016-08-26 16:10:46 CST; 10s ago
Process: 20423 ExecStart=/bin/sed -i -re "s/^(WirelessEnabled=).*\$/\1false/" /var/lib/NetworkManager/NetworkManager.state (code=exited, Main PID: 20423 (code=exited, status=1/FAILURE)
Aug 26 16:10:46 Y12 systemd[1]: Starting Disable Wi-Fi on startup...
Aug 26 16:10:46 Y12 sed[20423]: /bin/sed: -e expression #1, char 1: unknown command: `"'
Aug 26 16:10:46 Y12 systemd[1]: silenceWiFi.service: Main process exited, code=exited, status=1/FAILURE
Aug 26 16:10:46 Y12 systemd[1]: Failed to start Disable Wi-Fi on startup.
Aug 26 16:10:46 Y12 systemd[1]: silenceWiFi.service: Unit entered failed state.
Aug 26 16:10:46 Y12 systemd[1]: silenceWiFi.service: Failed with result 'exit-code'.
Is it possible to put the sed
in ExecStart line, which works without the need for a shell script (say, without the help of /etc/default/silenceWiFi).