Com unidades do systemd que têm argumentos, hipeses e outros especificadores são substituídos com barras para a frente.
Some unit names reflect paths existing in the file system namespace.
Example: a device unit dev-sda.device refers to a device with the
device node /dev/sda in the file system namespace. If this applies, a
special way to escape the path name is used, so that the result is
usable as part of a filename. Basically, given a path, "/" is replaced
by "-", and all other characters which are not ASCII alphanumerics are
replaced by C-style "\x2d" escapes
-- freedesktop.org
Eu estava tentando passar uma discussão com um hífen e notei que a unidade systemd não substitui meus hífens por uma barra. Então hífens nem sempre são relegados? Ou estou apenas interpretando as coisas incorretamente?
Basicamente eu quero passar uma string para uma unidade systemd que passa uma string para o executável que estou rodando na unidade.
Por exemplo:
Digamos que eu tenha uma unidade [email protected]
, dentro da unidade que quero executar:
/usr/local/bin/my_script param-with-hyphen
Se eu tentar passar o argumento com um hífen para a seguinte unidade assim:
$ systemctl start [email protected]
ExecStart=/usr/local/bin/my_script %i
Não converterá a string em param/with/hyphen
?
Nos meus testes, o hífen não é substituído.
Eu fiz uma unidade: /etc/systemd/system/[email protected]
[Unit]
Description=Test arg %i
[Service]
ExecStart=/usr/bin/echo "arg: %i"
e executou systemctl start testunit@test-hyphen
O resultado não substitui o hífen:
$ journalctl -u testunit@test-hyphen
Journal file /var/log/journal/f41c5d772fa24834926605125d59db1b/user-1000@4cc6a20c4391418eb972f65e6ecfafbe-000000000000043c-0005351d59c7b07b.journal is truncated, ignoring file.
-- Logs begin at Fri 2016-06-10 18:15:25 PDT, end at Sat 2016-09-24 23:12:42 PDT
Sep 24 23:12:25 Archon systemd[1]: Started Test arg test-hyphen.
Sep 24 23:12:25 Archon echo[6302]: arg: test-hyphen