Provavelmente, as aspas duplas funcionarão:
sudo -H -u $myuser bash -c "DISPLAY=:0 /usr/bin/dbus-launch $pathappimage start -i &"
ou se o seu $pathappimage
puder conter espaços, etc.:
… "DISPLAY=:0 /usr/bin/dbus-launch \"$pathappimage\" start -i &"
^^ ^^
# these double quotes are escaped and they will remain
No caso de precisar de aspas simples por um motivo, você pode alterar um tipo de aspas assim:
sudo -H -u $myuser bash -c 'DISPLAY=:0 /usr/bin/dbus-launch '"$pathappimage"' start -i &'
# ^---- this is still treated as a single argument to bash ----^
$pathappimage
será expandido pelo shell atual antes que bash
seja executado. Se você quiser que bash
veja o resultado como aspas duplas, caso tenha espaços ou algo em $pathappimage
, invoque assim:
… 'DISPLAY=:0 /usr/bin/dbus-launch "'"$pathappimage"'" start -i &'
# ^ ^
# these double quotes are in single quotes and they will remain
ou até mesmo entre aspas:
… 'DISPLAY=:0 /usr/bin/dbus-launch '\'"$pathappimage"\'' start -i &'
# ^^ ^^
# these single quotes are escaped and they will remain
Outra abordagem (inferior). Você poderia export
da variável, passar a string inteira entre aspas simples e, em seguida, não exportar se necessário:
export pathappimage
bash -c 'DISPLAY=:0 /usr/bin/dbus-launch "$pathappimage" start -i &'
# bash will see the whole single-quoted string literally
export -n pathappimage
Agora, bash
que você chama expandirá $pathappimage
, essa variável estará em seu ambiente. No entanto sudo
não preservará o ambiente, a menos que você use sudo --preserve-env
, que pode não ser o que você quer ou é capaz de fazer. Por causa disso, citações inteligentes são melhores e provavelmente mais seguras.