XFree86

XDM

XDM это наиболее часто используемый способ войти на графический терминал. Он немного похож на login, но внутренне совершенно с ним различен.

В директории /etc/X11/xdm содержатся конфигурационные файлы, которые исполняются на различных стадиях входа в систему. Xstartup (и Xstartup_0 специально для экрана 0) содержат команды, которые будут запущены после входа пользователя в систему (команды исполняются от имени root).

Путь устанавливаемый для пользователей находится в /etc/X11/xdm/xdm-config. Он содержит строки:

DisplayManager*userPath: /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 
DisplayManager*systemPath: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Это будет путь по умолчанию для обычных пользователей и root соотвественно. Очень важно, что /usr/bin/X11 доступен для пользователей X. Если пользователь X заходит на другую машину, чтобы запустить клиентское приложение X, он должен иметь /usr/bin/X11 в его пути, даже если он не заходит прямо с X терминала.

После исполнения Xstartup, XDM запускает /etc/X11/Xsession от имени пользователя. Локальная конфигурация производится из /etc/enviroment, который включается в Xsession если он существует. (Xsession исполняется при помощи /bin/sh, поэтому /etc/environment должен быть sh скриптом). Эта организация конфликтует с ssh, который предполагает, что /etc/environment, это файл содержащий строки вида ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ.

xterm -ls

По умолчанию путь для всех команд вызванных из меню оконного менеджера, это путь унаследованный от XDM. Чтобы использовать другой путь, его необходимо указать явно. Чтобы запустить эмулятор терминала с "нормальным" значением path, необходимо использовать специальные опции. Для xterm нужно использовать опцию -ls (login shell), чтобы вызвать 'login' интерпретатор с путем, указанным в файлах инициализации интерпретатора.

Меню и кнопки оконных менеджеров

Оконный менеджер наследует окружение от XDM. Все программы запущенные оконным менеджером наследуют его окружение.

Окружение пользовательского интерпретатора не влияет на программы которые запускаются при помощи меню и кнопок оконного менеджера. Например, если программа запущена из 'xterm -ls', она имеет окружение 'login' интерпретатора, но если она запущена из меню, она имеет окружение оконного менеджера.