Хорошо, у меня есть небольшая проблема с PATH, и я запускаю процесс как другой пользователь под Ubuntu.
Во-первых, мы проверяем, где находится корзина:
root@host:~# whereis start-stop-daemon
start-stop-daemon: /sbin/start-stop-daemon /usr/share/man/man8/start-stop-daemon.8.gz
ок, / sbin / start-stop-daemon, так что в / sbin. затем мы проверяем путь как пользователь, которого хотим запустить приложение:
root@host:~# su wojtek -c "echo $PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@host:~# su -l wojtek -c "echo $PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
в обоих случаях PATH абсолютно одинаков (т.е. в обычном su и при полном входе в систему), но есть различие, когда мы на самом деле хочу выполнить команду:
root@host:~# su wojtek -c "start-stop-daemon"
bash: start-stop-daemon: command not found
root@host:~# su -l wojtek -c "start-stop-daemon"
start-stop-daemon: need one of --start or --stop or --status
Try 'start-stop-daemon --help' for more information.
Может кто-нибудь попытаться объяснить, откуда взялась разница? Потому что для меня не должно быть никаких ошибок, так как нет разницы в PATH, поэтому $ start-stop-daemon для данного пользователя должен работать в любом случае ...
также - если я переключаюсь на другого пользователя ($ su user и $ su - user), то $ start-stop-daemon в обоих случаях ...
Чего мне не хватает?
Путь, кажется, одинаков в ваших двух утверждениях, потому что $ PATH был расширен в двойных кавычках перед передачей команде su .
Попробуйте это с одинарными кавычками, и я думаю, вы будете приятно удивлены:
su wojtek -c 'echo $PATH'
против
su -l wojtek -c 'echo $PATH'