J'ai un script personnalisé pour monter Google Drives.
[.____] La partie de ce script est suivant le code:
if [ ! "$(which google-drive-ocamlfuse)" ]
then
echo "Install google-drive-ocamlfuse first!"
exit 1
fi
Exécuté de terminal, fonctionne comme le charme.
[.____] Alors, je l'ai configuré en tant que service:
[Unit]
Description=Mount and umount google drives
[Service]
User=<usernamehere>
Type=oneshot
RemainAfterExit=true
ExecStart=/home/<usernamehere>/mybscripts/gdrivemounter.sh -m
ExecStop=/home/<usernamehere>/mybscripts/gdrivemounter.sh -u
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/<usernamehere>/.Xauthority"
[Install]
WantedBy=graphical.target
Malheureusement, je vois le code de sortie: "Installez Google-Drive-Ocamlfuse d'abord!" quand je vérifie le statut de service.
Commande quelle Google-Drive-Ocamlfuse sous l'utilisateur et la racine me donne un chemin valide:
$ which google-drive-ocamlfuse
/home/<usernamehere>/.opam/default/bin/google-drive-ocamlfuse
Où est le problème?
Le problème est que lorsque le script fonctionne comme un service, il ne fonctionne pas comme "vous": il n'a pas votre environnement. Spécifiquement, il n'a pas votre variable PATH
.
Soit ajouter /home/<usernamehere>/.opam/default/bin
sur le chemin de votre script, ou tout simplement codé le chemin complet de ce programme.
La raison la plus probable est que le répertoire contenant google-drive-ocamlfuse
est dans le PATH
de votre coquille de connexion, mais pas dans la norme PATH
utilisé par systemd
.
Il suffit d'ajouter une ligne comme celle-ci au début de votre script:
PATH=$PATH:/path/to/google-drive-ocamlfuse
Merci à tous pour des solutions. Chacun est important pour moi et utile - encore une fois j'ai appris quelque chose de nouveau. À la fin, j'ai décidé d'installer Google-Drive-Ocamlfuse de Deb, à la place via OPAM. Il est préférable d'installer GDO dans un chemin disponible pour tous les utilisateurs. Pour cette raison, une configuration supplémentaire de $ de path n'est pas nécessaire.