problema com PATH ao usar $ su

0

OK, estou tendo um pequeno problema com o PATH e executando um processo como outro usuário no Ubuntu.

Primeiro, verificamos onde está o bin:

root@host:~# whereis start-stop-daemon
start-stop-daemon: /sbin/start-stop-daemon /usr/share/man/man8/start-stop-daemon.8.gz

ok, / sbin / start-stop-daemon, portanto, você está em / sbin. Em seguida, verificamos o caminho como um usuário que queremos executar o aplicativo:

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

em ambos os casos, o PATH é exatamente o mesmo (ou seja, em su normal e com login completo), ainda que haja uma distinção quando realmente queremos executar o comando:

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.

Alguém pode tentar explicar de onde vem a diferença? Porque para mim não deve haver nenhum erro, já que não há diferença no PATH, portanto o $ start-stop-daemon para um dado usuário deve funcionar de qualquer forma ...

também - se eu mudar para usuário diferente ($ su user e $ su - user) então $ start-stop-daemon em ambos os casos ...

o que estou perdendo?

    
por Wojtek 19.06.2013 / 14:11

1 resposta

1

O caminho parece ser o mesmo em suas duas instruções porque $ PATH foi expandido dentro das aspas duplas antes de ser passado para o comando su .

Experimente com aspas simples e eu acho que você ficará agradavelmente surpreso:

su wojtek -c 'echo $PATH'

vs

su -l wojtek -c 'echo $PATH'
    
por Nate from Kalamazoo 19.06.2013 / 15:22