Один из способов обойти это — использовать несколько sed
шагов, чтобы убрать все двойные кавычки.
В первом вы должны заменить все двойные кавычки в целевом файле символом тега, например @
. Это должен быть символ или строка, гарантированно отсутствующая в оригинале.
Затем вы должны выполнить замену, используя исходную и целевую строки, как ваши оригиналы, но со всеми кавычками, замененными символом тега в обеих строках.
Наконец, вы замените все символы тегов двойными кавычками.
Что касается .*
, то это своего рода пирог и съешь его ситуацию. Если оно не заключено в кавычки, bash
съест его, а если оно будет заключено в кавычки, sed
увидит его как буквальное значение. Возможно, вам придется переписать эту часть, используя регулярное выражение, которое останется в кавычках в bash
, но вступит в силу в sed
.
Вот почему я сказал, что, вероятно, в awk
будет проще. ; )Особенно последняя часть!
Сообщение об ошибке генерируется языком программирования, эквивалентным этой команде сценария оболочки:
echo "Can't open display: $DISPLAY" >&2
Таким образом, тот факт, что вы ничего не видите после второго двоеточия, означает, что переменная окружения DISPLAY
не была установлена (или была установлена в нулевое значение ).
При запуске сервера X11 также создается файл cookie сеанса (, если не отключена аутентификация X11, что не является безопасным ). У вас должно быть что-то, что передает копию этого файла cookie пользователю, выполняющему приложения X11 :файл cookie обычно помещается либо в файл, на который указывает переменная среды XAUTHORITY
, либо, если такая переменная не определена, в ~/.Xauthority
в домашнем каталоге пользователя.
Вот почему запуск сервера X11 обычно выполняется специальной программой :либо startx
(, которая представляет собой скрипт, использующий инструмент низкого -уровня xinit
), если вы собираетесь запустить сеанс X11 для пользователь, который уже вошел в систему локально в текстовом режиме, или X Display Manager (, обычно с именем *dm
, например gdm
, sddm
, xdm
), которые сначала отобразят запрос входа в систему с графическим интерфейсом, а затем обработают вход пользователя.
В обоих случаях специальная программа будет обрабатывать запуск как сервера X11, так и первого приложения с графическим интерфейсом, использующего сервер, поэтому программа может передать соответствующие параметры среды процессу приложения. Любые дочерние процессы первого приложения автоматически наследуют переменные среды.
(Настройка сеанса X11 может и часто будет делать гораздо больше, но это абсолютный минимум, который необходимо сделать.)