Чтобы запустить vlc от имени другого пользователя, используйте:
#!/bin/sh
su user -c 'vlc -vvv bigbuck.mp4 --sout "#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}" &
Если вам не нужен графический интерфейс, вы можете использовать cvlc вместо vlc:
#!/bin/sh
su user -c 'cvlc -vvv bigbuck.mp4 --sout "#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}" &
обсуждение
Когда пользователь запускает su - user в командной строке, он открывает оболочку под учетной записью пользователя. Затем вы можете интерактивно войти в эту оболочку. При написании сценария оболочки с помощью su хитрость заключается в использовании опции -c чтобы команда запускалась от имени пользователя.
Рассматривать:
#!/bin/sh
su - user
vlc -vvv bigbuck.mp4 --sout '#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}' &
Команда su - user откроет оболочку входа под учетной записью пользователя. Только после выхода из этой оболочки будет запущена команда vlc . Это не то, что вы хотите, и поэтому нужна опция -c .
справки о
Опция -c для su задокументирована в man su:
-c, --command COMMAND
Specify a command that will be invoked by the shell using its -c.
The executed command will have no controlling terminal. This option
cannot be used to execute interractive programs which need a
controlling TTY.