J'aimerais utiliser la variable $PWD dans un fichier de service systemd mais il semble qu'elle soit toujours vide même si j'ai défini un fichier WorkingDirectory.

[Unit]
Description=data-builder
Requires=docker.service
After=docker.service


[Service]
Restart=always
# docker-pull could take a while so we disable the timeout
TimeoutStartSec=0

WorkingDirectory=/var/data-builder/


ExecStart=docker run -e HOST_DATA=${PWD}/data -v -v ${PWD}/data:/opt/data-builder/data someorg/data-builder:latest


[Install]
WantedBy=multi-user.target

$PWD est-il défini dans une unité systemd ? Puis-je utiliser une autre variable à la place ?

answer

Les lignes que vous indiquez n'ont pas besoin d'être gérées par un shell de quelque sorte que ce soit, donc pas d'environnement ou d'autre expansion de variable. Il suffit de diviser en "mots" et de passer à un appel système familial exec(3).