Вперед Назад Содержание

## 5. Кириллизация shell

## 5.1 bash

Для того, чтобы заставить bash понять 8-ми битные символы, необходимо установить три переменные. Лучше всего это сделать из файла `~/.inputrc`.

Должны быть сделаны следующие установки:

    set meta-flag on
    set convert-meta off
    set output-meta on

Следует отметить, что файл `~/.inputrc` не имеет отношения непосредственно к bash -- это конфигурационный файл библиотеки GNU readline, используемой bash-ем. Поэтому совет о `.inputrc` кириллизирует не только bash, но и многие другие программы (все, использующие GNU readline).

Во многих дистрибутивах версии GNU readline кроме файла `~/.inputrc` используют также и общесистемный конфигурационный файл `/etc/inputrc` или `/etc/Inputrc`. Это даёт возможность системному администратору сделать общесистемную "кириллизацию" сразу для всех пользователей. Если ваша система не использует общесистемный конфигурационный файл, то вы можете научить её это делать. Создайте файл `/etc/inputrc`, а затем установите переменную окружения `INPUTRC` равную `/etc/inputrc`.

## 5.2 csh/tcsh

Поместите в `.cshrc` следующее:

    setenv LC_CTYPE iso_8859_5
    stty pass8

Если у вас нет POSIX-совместимого stty (только не в Linux), замените последнюю строчку следующей:

    stty -istrip cs8

## 5.3 zsh

Сделайте то же самое, что делается для `csh` ( csh). Файл инициализации в этом случае -- `.zshrc` или `/etc/zshrc`.

## 5.4 ksh

Что касается public domain реализации `ksh` -- `pdksh` версии 5.1.3 и выше, то вы можете разрешить 8-ми разрядный ввод только для `vi` в режиме ввода. Для этого используйте:

    set -o vi

## 5.5 less

Если локаль (см. раздел Настройка локали) не настроена (а она обязана быть настроенной), то вывод кириллицы через `less` можно получить, установив переменную окружения `LESSCHARSET`:

    export LESSCHARSET=koi8-r

Это решение годится для всех 8-битовых кириллических кодировок.

Старые версии `less` не поддерживали эту установку, поэтому вместо `koi8-r` в этом случае следует подставить `latin1`. При этом однако становятся недоступными символы, чьи коды находятся в диапазоне 128-159. К счастью, коды букв обычно вне этого диапазона.

При настроенной локали (см. раздел Настройка локали) указывать `LESSCHARSET` НЕ НАДО. Более того, в `~/.lesskey` надо добавить

    #env
    LESSCHARSET=

чтобы программа игнорировала установку `LESSCHARSET=` другими "глупыми" программами (к примеру, `man`). После этого надо запустить `lesskey` для получения бинарного файла `~/.less`. В противном случае он не будет вызывать `setlocale(LC_CTYPE,"")` и, как следствие, не будет `icase search` для русских букв.

## 5.6 mc (The Midnight Commander)

Чтобы увидеть кириллицу из mc, выберите опцию `full 8 bits` в `Options/Display` меню.

Если и в этом случае при просмотре файла из mc вы не увидите кириллических символов, то загляните в раздел nroff.

В случае возникновения проблем при просмотре `man` статей -- сверьтесь с разделом man.

Если у вас проблемы в виде уродливых оконных рамок, то проконсультируйтесь в разделе консоль Linux.

off-topic: если вы захотите, чтобы `mc` в окне `Xterm` был цветным, а не черно-белым, то установите переменную `COLORTERM`:

    COLORTERM= ; export COLORTERM

## 5.7 nroff

Для того, чтобы через `nroff` можно было "пропустить" символы кириллицы, надо использовать его с ключом -Tlatin1. Пропишите где-нибудь в стартовом скрипте (если у вас `bash`, то в `.bashrc`)

      alias nroff='nroff -Tlatin1'

Просмотр файлов в mc запускается через nroff (по крайней мере, в mc, идущем со Slackware'96). В файле /usr/lib/mc/mc.ext следует в строке вызова `nroff'а` изменить параметр вызова с -Tascii на -Tlatin1.

## 5.8 man

Сейчас довольно бурно развивается деятельность по переводу всего и вся на русский язык (ну, не так чтобы уж очень, но кое-кто кое-что делает). Все больше и больше появляется статей man, переведённых на русский язык, но вот отобразить их не всегда удаётся.

Если у меня есть файл с русскими буквами, то вызов, скажем `man ar` приводит к ерунде на экране.

Для исправления этого безобразия следует поправить соответствующие строки в `/usr/lib/man.config`, если это файл есть, или правильно настроить less (см. раздел less).

## 5.9 ls

Если локаль установлена неправильно (см. раздел Настройка локали), то `ls` не будет печатать кириллические символы. В этом случае, возможно, поможет одна из следующих команд: `ls -N`, `dir -N` или `ls --show-control-chars`.

## 5.10 rlogin

Удостоверьтесь, что shell на месте адресата установлена правильно. Если ваш `rlogin` не работает как надо по умолчанию, то используйте '`rlogin -8`'.

Пропишите в стартовом скрипте (если вы используете `bash`, то это `.bashrc`)

      alias rlogin='rlogin -8'

## 5.11 Samba

Чтобы увидеть русские буквы в именах файлов на диске Samba, в файл `/etc/smb.conf` следует добавить строчки:

    [global]
    character set = koi8-r
    client code page = 866
    preserve case = yes
    short preserve case = yes

Первые две опции указывает внутреннюю кодировку имён файловой системы (client code page) и внешнюю кодировку пользователя (character set).

Следующие две опции указывают, что надо сохранять регистр длинных и коротких имён файлов соответственно.

## 5.12 telnet

Если возникают проблемы с вводом русских символов, надо создать файл `~/.telnetrc` со следующей строкой:

    DEFAULT set outbinary

Вы можете встретить проблемы при работе в кодировке `cp1251` -- не передаётся маленькая русская буква "я" `0xff`. У протокола `TELNET` `0xff` -- это первый символ управляющей последовательности. Дабы передать собственно "я", нужно его удваивать: `0xff, 0xff`. При использовании `KOI8-R` такая проблема отсутствует.

off-topic: вместо telnet лучше использовать ssh (Secure Shell) -- максимальная безопасность при минимуме затрат.

## 5.13 IrcII

Добавить в файл конфигурации `~/.ircrc` следующие строчки:

    /set translation russian
    /set eight_bit_characters on

Вперед Назад Содержание