dbus-launch
é DBus -relacionados. exec
é um shell embutido. Veja suas páginas de manual / ajuda:
dbus-launch - Utility to start a message bus from a shell script.
exec - Replace the shell with the given command.
Então ... eles basicamente fazem duas coisas diferentes ... Enquanto ambos devem iniciar o programa p
passado como um parâmetro, você pode ler que no caso de dbus-launch
, algumas outras coisas são feitas primeiro :
You may specify a program to be run; in this case, dbus-launch will launch a session bus instance, set the appropriate environment variables so the specified program can find the bus, and then execute the specified program, with the specified arguments.
Nesse caso, uma instância do daemon DBus é criada antes da criação do processo e deve estar executando um barramento de sessão secundário, que é disponibilizado para o processo filho por meio de variáveis de ambiente.
Observe também que, no caso de exec
, o shell atual é substituído por um novo programa. dbus-launch
não substituirá o shell e nem o programa que você iniciar ao lado do daemon.