Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents 

3. Настройка приложений

Вот перечень файлов, которые мы будем настраивать: /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          # убрать писк
set meta-flag On                # разрешить 8-битный ввод (например, диакритические знаки)
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. Как альтернатива, существуют утилиты, которые спрашивают перечисленную выше информацию и делают всю работу сами.

Будет несравненно лучше для вас, исли вы посетите товарища, который уже имеет настроенную связь с провайдером и скачаете один из следующих прекрасных инструментов:

  • для X11 есть утилита EzPPP, домашняя страница которой находится по адресу http://www.serv.net/~cameron/ezppp/index.html . Очень легка в использовании и почти сама настраивается;
  • для соединения в  tty, попробуйте утилиту с  ftp://sunsite.unc.edu/pub/Linux/system/network/serial/ppp. Одной из лучших является pppsetup-X.XX.tar.gz.
  • наипростейшей настроечной утилитой на сегодня уверенно можно назвать wvdial. Вы даете ей телефон вашего провайдера, ваш логин, ваш пароль, и вы уже в полете. Из README файла: ``Сейчас для wvdial есть web страница по адресу: http://www.worldvisions.ca/wvdial''. Очень хороший инструмент.

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, ...


Next Previous Contents