Вероятно, двойные кавычки подойдут:
sudo -H -u $myuser bash -c "DISPLAY=:0 /usr/bin/dbus-launch $pathappimage start -i &"
или если ваш $pathappimage может содержать пробелы и т.д .:
… "DISPLAY=:0 /usr/bin/dbus-launch \"$pathappimage\" start -i &"
^^ ^^
# these double quotes are escaped and they will remain
Если вам нужны одинарные кавычки по причине, вы можете изменить тип кавычек, например:
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 будет расширен текущей оболочкой до запуска bash . Если вы хотите, чтобы bash видел результат в двойных кавычках, если у вас есть пробелы или что-то в $pathappimage , то вызовите так:
… 'DISPLAY=:0 /usr/bin/dbus-launch "'"$pathappimage"'" start -i &'
# ^ ^
# these double quotes are in single quotes and they will remain
или даже в кавычках:
… 'DISPLAY=:0 /usr/bin/dbus-launch '\'"$pathappimage"\'' start -i &'
# ^^ ^^
# these single quotes are escaped and they will remain
Другой (низший) подход. Вы можете export переменную, передать всю строку в одинарных кавычках, а затем отменить экспорт при необходимости:
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
Теперь bash вы вызываете, расширит $pathappimage , эта переменная будет в его окружении. Однако sudo не сохранит среду, если вы не используете sudo --preserve-env , что может быть не тем, что вы хотите или можете сделать. Из-за этого умное цитирование лучше и, вероятно, безопаснее.