Вероятно, при изучении файла xinitrc вы заметили, что пользователь может заменить установки глобального файла Xclients собственными, записанными в файле .Xclients его исходного каталога. В среде Red Hat после запуска Х-сервера программа xinit запускает исходные клиенты при помощи этих файлов.
Данный файл, как и файл xinitrc, - это сценарий оболочки, подчиняющийся всем правилам составления таких сценариев. Чтобы понять, для чего используется Xclients, рассмотрим стандартный файл Xclients из предварительной версии Linux Red Hat 7.1 (как и в предыдущем примере, строки пронумерованы для удобства).
1: #!/bin/bash
2: # (с) 1999, 2000 Red Hat, Inc.
3: # есть ли у пользователя стандартная оболочка
4: PREFERRED=
5: if [ -f /etc/sysconfig/desktop ]; then
6:
if [ -n "'grep -i GNOME /etc/sysconfig/desktop'" ] ; then
7: PREFERKED=gnome-session
8: elif [ -n "'grep -i KDE /etc/sysconfig/desktop'" ]; then
9 : PKEFERRED=startkde
10: elif [ -n "'grep -i AnotherLevel /etc/sysconfig/desktop'" ] ; then
11: PREFERRED=AnotherLevel
12: .fi
13: fi
14: if [ -n "$PKEFERRED" -a "$PREFERRED"
i=
"AnotherLevel" ] && \
15: which $PREFERRED >/dev/null 2>&1; then
16: PREFERRED='which $PREFERRED'
17: exec $PREFERRED
18: fi
19: t Если мы добрались сюда, то либо необходим AnotherLevel либо
20: # файл оболочки отсутствует и переменная PREFERRED не установлена.
21: if t -z "$PREFERRED" ] ; then
22: GSESSION=gnome-session
23: STARTKDE=startkde
24: # по умолчанию запускается GNOME.
25: if which $GSESSION >/dev/null 2>&1; then
26: exec 'which $GSESSION'
27: fi
28: # если GNOME не установлен, пробуем КОЕ.
29: if which $STARTKDE >/dev/null 2>&1; then
30: exec 'which $STARTKDE'
31: fi
32: fi
33: # В конце концов пробуем AnotherLevel
34: # TheNextLevel оставляет эти файлы нетронутыми.
35: rm -£ gHOME/Xrootenv.0