Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.




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

Библиотека сайта или "Мой Linux Documentation Project"

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


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют