Библиотека сайта rus-linux.net
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
Вперед Назад Содержание