Правильная команда:
sed -E 's/^id="([^"]+)"$/& name="\1" value="<?php echo htmlspecialchars($_POST['"'\1'"']); ?>"/'
Обратите внимание, что это переключается с двойных кавычек на одинарные, когда необходимо вставить одинарные кавычки. Вы не можете вставлять одинарные кавычки в одинарные кавычки в Bash. Период.
Но это не имеет значения, потому что кавычки не являются строковыми терминаторами в Bash, они просто разделители между разными стилями цитирования. Итак:
some-command 'This is in a single quoted string'"'"'This is another quoted string, but is part of the same argument to some-command'
^^^
This single quote is inside of double quotes.
Если вы не хотите беспокоиться о том, как кавычки оболочки взаимодействуют с sed
, вставьте свою команду sed
в файл и вызовите ее с помощью sed -f
.
~ / .xinitrc
выполняется xinit
, который обычно вызывается через startx
. Эта программа выполняется после входа в систему: сначала вы входите в систему с помощью текстовой консоли, а затем запускаете графический интерфейс с помощью startx
. Роль .xinitrc
заключается в запуске части сеанса с графическим интерфейсом пользователя, обычно путем установки некоторых параметров, связанных с графическим интерфейсом пользователя, таких как привязки клавиш (с помощью xmodmap
или xkbcomp
] ), X-ресурсы (с xrdb
) и т. Д., А также для запуска диспетчера сеансов или диспетчера окон (возможно, как часть среды рабочего стола).
~ / .xsession
выполняется, когда вы входите в систему в графическом режиме (в диспетчере дисплея ), и диспетчер дисплея вызывает «настраиваемый» тип сеанса.(С историческим диспетчером отображения xdm всегда выполняется .xsession
, но с современными диспетчерами отображения, которые предоставляют пользователю выбор типа сеанса, вам обычно нужно выбрать «custom» для .xsession
. Его роль заключается как в установке параметров времени входа в систему (таких как переменные среды), так и в запуске сеанса графического интерфейса пользователя. Типичный .xsession
- это
#!/bin/sh
. ~/.profile
. ~/.xinitrc
~ / .xsessionrc
выполняется в Debian (и производных, таких как Ubuntu, Linux Mint и т. Д.) Сценариями запуска X при входе в графический интерфейс, для всех типы сессий и (я думаю) от всех диспетчеров отображения. Он также выполняется из startx
, если у пользователя нет .xinitrc
, потому что в этом случае startx
возвращается к тем же сценариям запуска сеанса, которые используются для входа в графический интерфейс. Он выполняется относительно рано, после загрузки ресурсов, но перед запуском любой программы, такой как ключевой агент, демон D-Bus и т. Д. Обычно он устанавливает переменные, которые могут использоваться в последующих сценариях запуска. У него нет какой-либо официальной документации, о которой я знаю, вам нужно покопаться в источнике, чтобы увидеть, что работает.
.xinitrc
и .xsession
- исторические особенности оконной системы X11, поэтому они должны быть доступны и иметь аналогичное поведение во всех системах Unix. С другой стороны, .xsessionrc
- это функция Debian, и дистрибутивы, не основанные на Debian, не имеют ее, если они не реализовали что-то подобное.
.xprofile
очень похож на .xsessionrc
, но это часть сценария запуска сеанса GDM (диспетчера отображения GNOME), поэтому он читается, только если вы входите в систему с помощью GDM.
Согласно другому обсуждению, startx + ~ / .xsession и no ~ / .xinitrc, приводит к снижению функциональности (xfce4, sid)
Во-первых:
.xsessionrc
предназначен для хранения глобальных переменных среды . Акцент сделан на мне.Во-вторых:
40x11-common_xsessionrc
в/etc/X11/Xsession.d
получен до50x11-common_determine-startup
. Таким образом,.xsessionrc
читается перед.xsession
, и любые установленные переменные среды становятся доступными для приложений , запускаемых командами в.xsession
.
Дополнительная литература: