LINUX.ORG.RU

KDE: откуда берется env? В частности, кто устанавливает DBUS_SESSION_BUS_ADDRESS.

 , ,


0

1

Привет. У меня есть шелл, его зовут zsh. Он в качестве env выводит набор переменных. У меня есть kde, оно запускает krunner. Если из krunner сделать:

$env > ~/env.txt
А потом сделать
$diff ~/env.txt ~/env_shell.txt|wc -l
То получается: 145 То есть, много различий.

В чем конкретная проблема:

krunner тут давеча умер (крэшнулся). Я его попробовал запустить из шелла, а он мне заявил, что

unnamed app(7692): KUniqueApplication: Cannot find the D-Bus session server:  "Failed to connect to socket /tmp/dbus-ikp0cgX1Sm: Connection refused" 

А потом я открыл K-меню, вбил туда 'krunner' и о боги: он запустился нормально.

Дык вот, вопроса собственно два: 1) Откуда такая разница между env'ом шелла и env'ом кед? Если имеет значение, кеды запускаются из KDM, но насколько я помню, энв должен наследоваться, т.е. если krunner запущен kdeinit4, который запущен kdm, и оттуда запускается konsole, в которой запускается zsh, то все переменные, что были объявлены для процесса kdeinit4/krunner в результате будут в том же виде и в konsole/zsh.

2) Кто устанавливает

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ikp0cgX1Sm,guid=61435c0146788202b67a4f2d53c65c81
? Путь реально неверный, такого файла (dbus-ikp0cgX1Sm) в /tmp нету.

★★★★★

Да, 1) Часть переменных устанавливает Konsole сама. Это какая-то инфа про дбас:

KONSOLE_DBUS_SERVICE=:1.96
KONSOLE_DBUS_SESSION=/Sessions/2
KONSOLE_DBUS_WINDOW=/Windows/2
Часть переменных устанавливает ~/.zshrc Но это PATH, GOPATH и MANPATH (3 единицы). Еще есть какие-то сервисные переменные, имеющие отношение к krunner'у и kde'шной сессии, но это тоже не 72 (а именно такое значение выводится, если сделать diff|grep '>'),+ не понятно почему они не наследуются процессом zsh.

takino ★★★★★
() автор топика

Это весьма сложный вопрос. Ты шелл запускаешь из konsole? Тогда различий быть не должно.

DBUS_SESSION_BUS_ADDRESS устанавливается скриптом /etc/X11/xinitrc.d/30-dbus (это на арче так), который подтягивается из /usr/share/config/kdm/Xsession (в случае KDM).

И да, этот путь не обязан существовать.

intelfx ★★★★★
()
Ответ на: комментарий от anonymous

Ага, спасибо. Надо порыть стартовые скрипты kde, как я понимаю, чтобы вычленить инфу - кто же это запускает? :)

takino ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Ты шелл запускаешь из konsole? Тогда различий быть не должно.

Ну как бы может там есть какая-то KDE'шная магия, не знаю, но по логике вещей и по тому судя, что я ничего не настраивал - да, шелл запускается из konsole.


P.s. в новозапущенном konsole/шелле (который был запущен уже после того, как krunner был возрожден) - DBUS'овая информация совпадает с той, которую выдает env при запуске из krunner'а. Можно было бы предположить, что падал на самом деле не krunner, а dbus.
P.s.s. Я как-то забыл, что diff в том числе следит и за порядком/сортировкой строк, т.ч. 142 разных переменных - ложь, вранье и провокация. С отсортированными файлами env.txt получается всего 45 отличающихся строк (5 есть в обоих, но разные (PATH, EDITOR, LESS, MANPATH), остальное - судя по всему, служебная инфа konsole и то, что выставляет ~/.zshrc

takino ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.