Разница между .xinitrc, .xsession и .xsessionrc

Правильная команда:

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 .

57
09.05.2016, 03:04
2 ответа

~ / .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.

97
27.01.2020, 19:33

Согласно другому обсуждению, startx + ~ / .xsession и no ~ / .xinitrc, приводит к снижению функциональности (xfce4, sid)

Во-первых: .xsessionrc предназначен для хранения глобальных переменных среды . Акцент сделан на мне.

Во-вторых: 40x11-common_xsessionrc в /etc/X11/Xsession.d получен до 50x11-common_determine-startup . Таким образом, .xsessionrc читается перед .xsession , и любые установленные переменные среды становятся доступными для приложений , запускаемых командами в .xsession .

Дополнительная литература:

8
27.01.2020, 19:33

Теги

Похожие вопросы