Xinit - специальная программа запуска Х-сервера и исходной программы-клиента (например, диспетчера окон). По умолчанию startx проверяет наличие файла .xinitrc в исходном каталоге пользователя и запускает с этим файлом программу xinit. Если файл .xinitrc пользователя обнаружить не удается, программа xinit запускается с системным файлом xinitrc (в Linux Red Hat 7.1 - /etc/Xll/xinit/xinitrc). Если и системный файл найти не удается. то после запуска Х-сервера xinit открывает только окно xterm.
Файл xinitrc (или . xinitrc) - это выполняемый сценарий оболочки. Подробнее оболочки описаны в гл. 16, а сейчас мы рассмотрим стандартный файл из версии Linux Red Hat 7.1 и его функции. Строки пронумерованы для удобства: в реальном файле они не нумеруются.
1: #!/bin/sh
2: # (с) 1999, 2000 Red Hat, Inc.
3: userresources=$HOME/.Xresources
4: usermodmap=$HOME/.Xmodmap
5: userxkbmap= $HOME/.Xkbmap
6: sysresources=/etc/Xll/Xresources
7: sysmodmap=/etc/XI1/Xmodmap
8: sysxkbmap=/etc/Xll/Xkbmap
9:
# объединение параметров по умолчанию
10: if [ -f "$sysresources" ] ; then
11: xrdb -merge "$sysresources"
12: fi
13: if[ -f "$userresources" ] ; then
14: xrdb -merge "$userresources"
15: fi
16: # объединение эдов клавиатуры
17: if [ -f "$sysxlcbmap" ]; then
18: setxkbmap 'cat "$sysxkbmap"
19: XKB_IN_USE=yes
20: fi
21: if [ -f "$userxkbmap" ] ; then
22 : setxkbmap 'cat "$useirxktomap" '
23: XKB_IN_USE=yes
24: fi
25: if [ -z "$XKB_IN_USE" -a ! -L /etc/Xll/X ] ; then
26: if grep '
Л
ехес.*/Xsun' /etc/Xll/X > /dev/null 2>&1 && [ -f /etc/Xll/XF86Config ]; then
27: xkbsymbols='sed -n -e 's/~[ ] *XkbSymbols ]*"\(.*\) ".*$./\l/p' /etc/Xll/XF86Config'
28: if [ -n "$xkbsymbols" ]; then
29: setxkbmap -symbols "$xkbsymbols"
30: XKB_IN_USE=yes
31: fi
32: fi
33': fi