Как читать из stdin при подстановке процесса? [дубликат]

.zshrc - это конфигурационный файл zsh. Он считывается при запуске интерактивного экземпляра zsh. Интерактивная оболочка - это оболочка, с которой вы взаимодействуете на терминале. Вход в систему с графическим интерфейсом не включает интерактивную оболочку (и, кстати, вообще не включает zsh в обычной системе).

.zshrc не может помочь вам с настройкой графического интерфейса. Он считывается, когда вы открываете эмулятор терминала, или когда вы входите в систему через текстовую консоль или по сети. Он никогда не читается в нужное время для того, что вы хотите сделать.

Не существует полностью переносимого способа запуска команды при открытии сеанса. Самый надежный способ - это использовать возможности программы запуска среды рабочего стола или оконного менеджера, если таковой имеется (в большинстве случаев). Это единственный способ, который не зависит от дистрибутива.

Если вы запускаете GUI с помощью startx, это приводит к выполнению вашего ~/.xinitrc, поэтому поместите команду туда.

Для входа в систему в графическом режиме, если вам нужен способ, не зависящий от DE/WM, то вам нужно будет предоставить несколько хуков в зависимости от дистрибутива. В зависимости от диспетчера дисплеев¹, от окружения рабочего стола (или менеджера сеансов, или менеджера окон) и от того, как ваш дистрибутив (или ваш системный администратор) настроил типы сеансов, может существовать или не существовать файл, в котором вы можете указать команды для выполнения при входе в систему в графическом интерфейсе.

  • Если вы входите в "пользовательскую сессию", то выполняется ~/.xsession only. Задача этого файла - запустить все, включая DE/SM/WM.
  • На некоторых конфигурациях читается ~/.xprofile.
  • На некоторых конфигурациях читается ~/.xsessionrc.

Если файл типа .xprofile или .xsessionrc выполняется слишком рано, вам может понадобиться прибегнуть к грязным трюкам, чтобы заставить ваш код выполняться позже. Проверьте скрипты в /etc/X11/Xsession.d или аналогичные. Это еще больше зависит от дистрибутива. И снова, самый простой и переносимый способ выполнения кода при входе в систему с графическим интерфейсом и способ, который будет выполняться после всех системных вещей, - это объявить команду запуска вашему оконному менеджеру или среде рабочего стола. На самом деле, основная причина использования сценария, который подключается к сценарию запуска системной сессии, заключается в том, чтобы ваш код выполнялся раньше, например, потому что вы хотите изменить способ вызова WM/DE.

¹ Диспетчер дисплея - это программа, которая запрашивает ваш пароль при входе в систему в графическом режиме.

4
13.04.2017, 15:36
0 ответов

Теги

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