Вот перечень файлов, которые мы
будем настраивать:
/etc/profile
/etc/bashrc
.bashrc
.bash_profile .inputrc .less .lessrc .xinitrc .fvwmrc .fvwm2rc95
.Xmodmap .Xdefaults .jedrc. .abbrevs.sl .joerc .emacs .
Не добавляйте
пользователей, пока вы не закончили настраивать вашу систему; вы можете положить
общие файлы в
/etc/skel.
3.1 bash(1)Чтобы определить поведение
bash, нужно редактировать следующие файлы:
- /etc/bashrc содержит общесистемные псевдонимы и функции;
- /etc/profile содержит общесистемные переменные окружения и
приложения, которые запускаются при начальной загрузке;
- $HOME/.bashrc содержить пользовательские псевдонимы и функции;
- $HOME/.bash_profile содержит пользовательские переменные
окружения и приложения, которые запускаются при начальной загрузке;
- $HOME/.inputrc содержить клавишные привязки и др. вещи.
Примеры этих файлов приведены ниже. Первый и наиболее важный :
/etc/profile. Он содержит настройки многих свойств вашей системы, как
вы увидите в следующих секциях.
# /etc/profile
# Системные переменные окружения и программы начальной загрузки
# Функции и псевдонимы перенесены в /etc/bashrc
# Этот файл определяет следующие свойства:
#
# o пути
# o приглашения командной строки
# o некоторые переменные окружения
# o цвет ls
# o less
#
# Пользователи могут переопределить эти установки и/или добавить другие
# $HOME/.bash_profile
# установим нужный путь
echo $PATH | grep X11R6 > /dev/null
if [ $? = 1 ] ; then # добавим новые пути
PATH="$PATH:/usr/X11R6/bin:$HOME/bin:."
fi
# предупреждение пльзователя: регистрирующий или нерегистрирующий shell.
# Если регистрирующий, то приглашение
# синего цвета; в противном случае бирюзового.
# Приглашение для Root'а красное.
USER=`whoami`
if [ $LOGNAME = $USER ] ; then
COLOUR=44
else
COLOUR=45
fi
if [ $USER = 'root' ] ; then
COLOUR=41
fi
# задать действительный escape символ вместо ^[. Чтобы сделать это:
# emacs: ^Q ESC vi: ^V ESC
# joe: ` 0 2 7 jed: ` ESC
# Уберите `;1' если вы не любите атрибут `жирный'.
ESC=^[
PS1='$ESC[$COLOUR;37;1m$USER:$ESC[37;40;1m\w\$ '
PS2="Continue> "
# не создавать дамп памяти
ulimit -c 0
# установка umask
if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
umask 002
else
umask 022
fi
# несколько переменных
USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
EDITOR=jed
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
HISTFILESIZE=1000
export PATH PS1 PS2 USER LOGNAME MAIL EDITOR HOSTNAME HISTSIZE HISTFILESIZE
# включить цвет в ls
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -s -T 0 --color=tty'
# настройка less
LESS='-M-Q'
LESSEDIT="%E ?lt+%lt. %f"
LESSOPEN="| lesspipe.sh %s"
VISUAL=jed
LESSCHARSET=latin1
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
Вот пример /etc/bashrc:
# /etc/bashrc
# Общесистемные функции и псевдонимы
# Переменные окружения перенесены в /etc/profile
alias which="type -path"
alias d="ls"
alias dir="d"
Похожий и .bashrc:
# $HOME/.bashrc
# Источник глобальных определений
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# необходимо предупредить пользователя,
# что он в нерегистрирующем shell
if [ "$GET_PS1" = "" ] ; then
COLOUR=45
# определение действительного escape символа вместо ^[
ESC=^[
PS1='$ESC[$COLOUR;37m`whoami`:$ESC[37;40m\w\$ '
export PS1
fi
# псевдонимы
alias cp='cp -i'
alias l=less
alias lyx='lyx -width 900 -height 700'
alias mv='mv -i'
alias rm='rm -i'
alias x=startx
# Несколько полезных функций
inst() # Инсталировать .tar.gz архив в текущую директорию.
{ gzip -dc $1 | tar xvf - }
cz() # Содержание .zip архива.
{ unzip -l $* }
ctgz() # Содержание .tar.gz архива.
{
for file in $* ; do
gzip -dc ${file} | tar tf -
done
}
tgz() # Создать .tgz архив по типу zip.
{
name=$1 ; tar -cvf $1 ; shift
tar -rf ${name} $*
gzip -S .tgz ${name}
}
Это пример .bash_profile:
# $HOME/.bash_profile
# Пользовательские переменные окружения и программы начальной загрузки
# Этот файл содержить пользовательские настройки, который переопределяют
# установленные в /etc/profile
# Взять псевдонимы и функции
if [ -f ~/.bashrc ]; then
GET_PS1="NO" # не изменять цвет приглашения
. ~/.bashrc
fi
# назначить несколько директорий `по умолчанию'
export CDPATH="$CDPATH:$HOME:$HOME/text:$HOME/text/geology"
# исправить забой в rxvt 2.45
if [ "$COLORTERM" != "" ] ; then
stty erase ^?
ESC=^[ # задать действительный escape символ вместо ^[
echo -n "$ESC[36l"
fi
Это пример .inputrc:
# $HOME/.inputrc
# клавишные привязки
"\e[1~": beginning-of-line
"\e[3~": delete-char
"\e[4~": end-of-line
# (F1 .. F5) are "\e[[A" ... "\e[[E"
"\e[[A": "info \C-m"
set bell-style visible # убрать писк
# разрешить 8-битный ввод (например, диакритические знаки)
set meta-flag On
set convert-meta Off # не выдалять 8-битные символы
set output-meta On # корректно отображать 8-битные символы
set horizontal-scroll-mode On # пролистывать длинные команды
set show-all-if-ambiguous On  # после нажатия TAB
Для того, чтобы backspace и delete корректно работали в xterm
и других X11 приложениях, необходимо сделать следующее:
- поместите это в ваш .xinitrc:
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
- поместите это в ваш .Xmodmap:
keycode 22 = BackSpace
keycode 107 = Delete
это исправит консоль. Для
исправления xterm:
- поместите в ваш .Xdefaults:
xterm*VT100.Translations: #override ?Key>BackSpace: string(0x7F)\n\
?Key>Delete: string(0x1b) string("[3~")\n\
?Key>Home: string(0x1b) string("[1~")\n\
?Key>End: string(0x1b) string("[4~")\n\
Ctrl?Key>Prior: string(0x1b) string("[40~")\n\
Ctrl?Key>Next: string(0x1b) string("[41~")
nxterm*VT100.Translations: #override ?Key>BackSpace: string(0x7F)\n\
?Key>Delete: string(0x1b) string("[3~")\n\
?Key>Home: string(0x1b) string("[1~")\n\
?Key>End: string(0x1b) string("[4~")\n\
Ctrl?Key>Prior: string(0x1b) string("[40~")\n\
Ctrl?Key>Next: string(0x1b) string("[41~")
rxvt
немного более сложный, поскольку на его поведение влияют некоторые параметры,
задаваемые во время компиляции. Смотрите выше .bash_profile.
Более детальную информацию по bash(1) и readline(3)
смотрите в man.
Не надейтесь, что все программы будут работать корректно! Если вы, например,
запускаете joe в xterm некоторые клавиши не будут работать;
подобное верно и для версий rxvt старее 2.21.
3.2 ls(1)ls может отображать
содержание директории используя разные цвета для отображения разных типов
файлов. Чтобы включить это свойство, добавьте следующие строчки в
/etc/profile:
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -T 0 --color=tty'
(Если у вас нет
файла /etc/DIR_COLORS, удалите ссылку на него в первой строке.) Это
устанавливает переменную окружения LS_COLORS, которая содержит
список цветов установленных в /etc/DIR_COLORS. Примечание: не
спрашивайте меня почему, но это не работает с версией rxvt старее v.
2.21; используйте вместо него xterm. Схоже на то, что
rxvt имеет глюк, который не позволяет ему при некоторых обстоятельствах
корректно наследовать окружение.
ls в дистрибутиве Caldera не имеет цветов, однако есть
эквивалент color-ls. Добавьте это к /etc/bashrc:
alias ls="color-ls $LS_OPTIONS"
3.3 less(1)С помощью этого прекрасного
пейджера вы можете просматривать не только обыкновенный текст, но и сжатые
gzip, tar и zip архивы, man страницы и все, что хотите. Его настройка включает
несколько шагов:
- чтобы использовать его с клавишами перемещения, поместите этот ASCII файл
.lesskey в вашу домашнюю директорию:
^[[A back-line
^[[B forw-line
^[[C right-scroll
^[[D left-scroll
^[OA back-line
^[OB forw-line
^[OC right-scroll
^[OD left-scroll
^[[6~ forw-scroll
^[[5~ back-scroll
^[[1~ goto-line
^[[4~ goto-end
^[[7~ goto-line
^[[8~ goto-end
затем выполните команду
lesskey. Она создаст двоичный файл .less содержащий
клавишные привязки.
- сохраните следующий файл как /usr/bin/lesspipe.sh:
#!/bin/sh
# Это препроцессор для 'less'.
# Он используется, когда установлена переменная окружения
# LESSOPEN="|lesspipe.sh %s"
lesspipe() {
case "$1" in
*.tar) tar tf $1 2>/dev/null ;; # Просмотр содержания .tar и .tgz файлов
*.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;;
# Корректное отображение сжатых файлов
*.Z|*.z|*.gz) gzip -dc $1 2>/dev/null ;;
*.zip) unzip -l $1 2>/dev/null ;; # Просмотр архивов
*.arj) unarj -l $1 2>/dev/null ;;
*.rpm) rpm -q -p -i -l $1 2>/dev/null ;;
*.cpio) cpio --list -F $1 2>/dev/null ;;
*.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1`
FILE=`echo $FILE | cut -d ' ' -f 2`
if [ "$FILE" = "troff" ]; then
groff -s -p -t -e -Tascii -mandoc $1
fi ;;
*) file $1 | grep text > /dev/null ;
if [ $? = 1 ] ; then # это не некоторый тип текста
strings $1
fi ;;
esac
}
lesspipe $1
и не забудьте сделать его выполняемым с помощью комманды chmod 755
lesspipe.sh.
- поместите эти строки в /etc/profile:
LESS="-M-Q" # не показывать длинные сообщения
LESSEDIT="%E ?lt+%lt. %f" # редактировать верхнюю строку
LESSOPEN="| lesspipe.sh %s" # фильтр
VISUAL=jed # редактор по умолчанию --- вставьте ваш любимый
LESSCHARSET=latin1 # отображать диакритические символы если нужно
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
Переменная
LESSCHARSET зависит от факта, что я живу в Италии и хочу использовать
таблицу символов ISO 8859/1. Вы друзья американцы, японцы, русские и тому
подобное лучше не устанавливайте ее.
3.4 emacs(1)Я не использую
emacs, поэтому я могу посоветовать вам только одно. Некоторые
дистрибутивы emacs поставляются без предустановленной цветовой и
синтаксической подсветки. Допишите это в ваш .emacs:
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
Это работает только
для X11. Я отправляю вас внимательно почитать всю документацию по emacs,
чтобы вы смоголи настроить его под свои нужды -- потенциально, это можеть
занять несколько месяцев отладки...
3.5 joe(1)Некоторые "товарищи" сообщают,
что joe работает с цветами под X11, но не в tty. К тому же, не
работают некоторые специльные клавиши. Насколько мне известно, никто не нашел
решения для маленькой старой клячи; кое-кто предлагает отлаживать
/etc/termcap.
Если вы столкнулись с этой проблемой, быстрое и плохое (и неэлегантное)
решение следующее:
~$ export TERM=vt100
~$ joe myfile
(edit your file)
~$ export TERM=linux
3.6 jed(1)Это мой любимый редактор: он
делает то, что я хочу, его легче и проще настраивать чем emacs, и IMHO
отлично эмулирует другие редакторы. Многие пользователи в моем университете
хотят, чтобы jed эмулировал EDT, редактор системы VMS.
Настроечным файлом для jed является .jedrc и все, что в
/usr/lib/jed/lib/; предыдущий может быть взят из
jed.rc в указанной дериктории.
- чтобы заставить jed корректно использовать специльные клавиши,
создайте файл /usr/lib/jed/lib/defaults.sl, который содержит только
одну строку:
() = evalfile("linux");
- отредактируйте /usr/lib/jed/lib/linux.sl; снимите комментарий со
строки Info_Directory = "/usr/info"; и добавьте
/bin/mail после UCB_Mailer =;
- способ заставить jed эмулировать EDT (или другие
редакторы ) довольно прямолинеен : вы только должны отредактивновать несколько
строк в .jedrc. Если вы хотите использовать клавишу "+" на
цифровой клавиатуре для удаления слов вместо единичных символов, добавьте это
в.jedrc:
unsetkey("\eOl");
unsetkey("\eOP\eOl");
setkey("edt_wdel", "\eOl");
setkey("edt_uwdel", "\eOP\eOl");
после строки,
следующего вида () = evalfile("edt");.
- чтобу xjed использовал цифровую клавиатуру для эмуляции
EDT, вставьте следующее в .Xmodmap:
keycode 77 = KP_F1
keycode 112 = KP_F2
keycode 63 = KP_F3
keycode 82 = KP_F4
keycode 86 = KP_Separator
Более того, убедитесь,
что ваш /etc/X11/XF86Config содержит следующие строки:
ServerNumLock # должен быть откоментирован
XkbDisable
Это применяется для XFree
3.2. Если только вы не используете американский стандарт клавиатуры ,
заметьте, что ``XkbDisable'' создает проблемы. Вы исследуете это сами.
- настройка цветов для xjed производится добавлением
следующих строк к .Xdefaults:
xjed*Geometry: 80x32+150+50
xjed*font: 10x20
xjed*background: midnight blue
``Аббревиатуры'' - это неоценимое
средство сохранения времени. Создайте файл подобный следующему и
сохраните в $HOME/.abbrevs.sl:
create_abbrev_table ("Global", "");
define_abbrev ("Global", "GG", "Guido Gonzato");
create_abbrev_table ("TeX", "\\A-Za-z0-9");
define_abbrev ("TeX", "\\beq", "\\begin{equation}");
define_abbrev ("TeX", "\\eeq", "\\end{equation}");
% and so on...
и выполните ESC x abbrev_mode,
чтобы включить его. Чтобы аббревиатуры были включены по умолчанию,
добавьте следующие строки к вашему .jedrc:
define text_mode_hook ()
{
set_abbrev_mode (1);
}
%
define fortran_hook ()
{
set_abbrev_mode (1);
use_abbrev_table ("Fortran");
}
% and so on...
3.7 efax(1)Этот пакет вероятно самый удобный
для простой отправки/получения факсов. Вам нужно будет создать скрипт
/usr/bin/fax; легко работающий, но с некоторыми причудами, вызвавшими у
меня головную боль:
- DIALPREFIX: простой выбор только `T' или `P' не будет работать в
большинстве стран. Задайте вместо этого `ATDT' или `ATDP';
- INIT и RESET: эти строки содержат инициализаторы `-i' и `-k', необходимые
для efax. Если вы хотите добавить AT команду, добавьте ее к
соответствующей строке без `AT' с предшествующим ключом `-i' или `-k'.
Например: чтобы добавить команду `ATX3' к INIT, вы добавите `-iX3'.
3.8 TeX и аналогиЯ предположу, что у вас дистрибутив
teTeX. Остановимся здесь только на нескольких вещах:
- чтобы определить схему переносов для вашего языка, отредактируйте файл
/usr/lib/texmf/texmf/tex/generic/config/language.dat, затем
выполните:
~# texconfig init ; texconfig hyphen
- если вы добавили пакет LaTeX, после добавления файлов в
/usr/lib/texmf/texmf/tex/latex/ выполните команду texhash,
чтобы teTeX узнал о новом пакете;
- чтобы настроить dvips, нужно редактировать файл
/usr/lib/texmf/texmf/dvips/config/config.ps. Помните, что строки,
отвечающие за разрешение по умолчанию, также определяют поведение
xdvi; если вам надоело задавать фонты каждый раз, когда вы запускаете
пакет, поместите строку
XDvi*mfmode:
в .Xdefault. Это должно
помочь.
3.9 PPPЗдесь я буду предполагать, что поддержка PPP +
TCP/IP уже встроена в ядро при компиляции, активирован loopback интерфейс, вы
уже имеете корректно инсталированный пакет pppd и зарегистрированы под
root. Обычно ваш интернет провайдер должен поддерживать PPP.
Существует теперь два способа заставить PPP работать: a) ручная настройка, и
b) с помощью конфигурационной программы, которая это делает сама. Какой бы
вариант вы не выбрали, вам потребуется следующая информация:
- номер телефона вашего провайдера;
- сервер имен вашего провайдера;
- сервер почты и новостей вашего провайдера;
- домен вашего провайдера;
- ваше регистрационное имя и пароль.
Ручная настройка более
хлопотная. Нужно отредактировать некоторые файлы и написать скрипты; не очень
много работы, но легко наделать ошибок и новички часто пугаются. Здесь вам может
помочь PPP-HOWTO. Как альтернатива, существуют утилиты, которые спрашивают
перечисленную выше информацию и делают всю работу сами.
Будет несравненно лучше для вас, исли вы посетите товарища, который уже имеет
настроенную связь с провайдером и скачаете один из следующих прекрасных
инструментов:
3.10 POP клиентДля получения вашей почты с POP
сервера, вы используете таких POP клиентов как fetchpop или
fetchmail. Последний более продвинут, и вероятно является единственным
выбором, если PPP сервер вашего провайдера не может работать с командой LAST.
Они доступны на ftp://sunsite.unc.edu/pub/Linux/system/mail/pop.
Для настройки этих клиентов:
- fetchpop: при первом запуске он вас спросит некоторые сведения.
Ответьте на вопросы и вы готовы к работе.
- fetchmail: настройте подобно примеру .fetchmailrc:
# $HOME/.fetchmailrc
poll mbox.myisp.com with protocol pop3;
user john there with password _Loo%ny is john here
Вы
должны установить права доступа к этому файлу с помощью команды chmod 600
.fetchmailrc, в противном случае fetchmail скорее всего не
захочет запуститься. Этот пример показывает только основные настройки и
предполагает, что у вас запущен sendmail; в принципе, возможности
настройки безграничны. Почитайте http://www.ccil.org/~esr/fetchmail.
3.11 Система X WindowКак только вы заставили X
работать (правильный выбор видеокарты и т.п.), существуют безграничные
возможности для настройки - все зависит от того, какой менеджер окон вы выбрали.
В любом случае, все сведется к редактированию одного или нескольких ASCII файлов
в вашей домашней директории. Так для менеджеров окон:
- fvwm: скопируйте /etc/X11/fvwm/system.fvwmrc в вашу
домашнюю директорию как .fvwmrc, просмотрите его и начинайте
экспериментировать. Этот встроенный system.fvwmrc является по моему
мнению слишком простым и не делает погоды в fvwm.
- fvwm95-2: скопируйте /etc/X11/fvwm95-2/fvwm2rc95 в вашу
домашнюю директорию как .fvwm2rc95, затем отредактируйте его.
Встроенный пример достаточно хорош.
- TheNextLevel: этого немного труднее настраивать. Скопируйте
/etc/X11/TheNextLevel/.* в вашу домашнюю директорию, внимательно их
изучите, затем попробуйте поэкспериментировать с ними. Первое, на что нужно
смотреть, это .fvwm2rc.defines.
К тому же, убедитесь,
что у вас корректный .xinitrc. Например:
#!/bin/sh
# $HOME/.xinitrc
# настройка корректной работы некоторых клавиш
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
xset s noblank # выключить хранитель экрана
xset s 300 2 # хранитель экрана запустится через 5 минут
xsetroot -solid "medium blue" ?
# rxvt занимает меньше памяти, но у версий старше 2.21 есть глюки
# касательно клавиш и способа наследования окружения. Обновите версию или
# используйте вместо него xterm.
xterm -ls -bg black -fg white -sb -sl 500 -j -ls -fn 10x20 -fb 10x20bold \
-title "Color xterm" -geometry 80x25+150+0 ?
fvwm95-2
3.12 FortranСудя по моему опыту, если вам нужен
Фортран, то лучшей альтернативой использованию g77 будет Фортран
--> Си транслятор f2c и перед ним yaf77.
yaf77-X.Y.tgz можно получить на ftp://sunsite.unc.edu/pub/Linux/devel/lang/fortran
.
3.13 Настройки пользователейХорошая идея
предоставить новому пользователю несколько готовых настроечных файлов во время
первой регистрации в системе. Поместите следующие файлы в /etc/skel:
.bashrc .bash_profile .bash_logout .inputrc .less .xinitrc .fvwmrc
.fvwm2rc95 .Xmodmap .Xdefaults .jedrc .abbrevs.sl. .joerc .emacs
Заметьте, что .pinerc может быть не одинаковым;
удостоверьтесь, что, как минимум, user-domain, smtp-server, и
nntp-server установлены правильно.
3.14 МодернизацияЕсли вы обновляете ваш компьютер,
не забудьте сохранить до этого некоторые дополнительные файлы. Некоторые из них:
/etc/X11/XF86Config, /usr/bin/fax, ...
|