Простой вопрос, как переключатся EN/RU в bash?
Столько всего написано и ничего не понятно.
Всюду с иксами, какие иксы, когда я в голой консоли.
Вот нашёл текст http://lib.ru/unixhelp/fonty.txt стока написанно афигеть!
И, кстати, поставил Opera из портов CRUX и в ней html весь иероглифами, хотя в Firefox нормально всё.
Что за путаница с этими шрифтами и локалями, объясните по нормальному?
text
#
# /etc/profile: system-wide defaults for bash(1) login shells
#
И, кстати, ~/.fluxbox/startup игнорируется, тоже необъяснимое явление!
Так что setxkbmap -layout "us,ru" -option "grp:ctrl_shift_toggle,grp_led:scroll" некуда добавить.
Это как раз определяет конфигурацию раскладок клавиатуры в иксах. У меня проживает в /etc/X11/xorg.conf.d/90-keyboard-layout.conf. Для того, чтобы переключались раскладки в консоли, нужно выбрать файл keymap - раскладки клавиатуры и шрифт с символами русских букв:
Показать
text
$ cat /etc/rc.d/rc.keymap
#!/bin/sh
# Load the keyboard map. More maps in /usr/share/kbd/keymaps.
KEYMAP="ruwin_ct_sh-UTF-8.map.gz"
if [ -x /usr/bin/loadkeys ]; then
echo "Loading keyboard layout: $KEYMAP, CTRL+SHIFT for toggle."
/usr/bin/loadkeys $KEYMAP;
fi
$ cat /etc/rc.d/rc.font
#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/share/kbd/consolefonts.
#
#setfont -v
unicode_start cyr-sun16.psfu.gz
for i in {1..6}; do
echo -ne "\033%G" > /dev/tty$i;
done
Я правильно понимаю?
loadkeys ruwin_ct_sh-UTF-8.map.gz
bash об этом знает из конфига /etc/rc.d/rc.keymap
...причём это больше похоже на скрипт чем на конфиг,
у меня этих файлов даже не было, поэтому спрашиваю.
Что-то не пошло, unicode_start cyr-sun16.pcfu.gz пишет, невозможно открыть файл. Может это связано с сборкрой ядра?
Раньше у меня получалось даже простым редактированием rc.conf. Шрифт есть, я проверял. И даже с указанием пути не работает,
хотя я думаю путь по-умолчание всегда указан.
Вот теперь и нельзя понять работают ли Slackware-specific стартовые скрипты, хотя я думаю они поддерживаются CRUX,
может быть только /rc.d не обязательно.
и увидите, что файла действительно нет. Положите его туда, и все. Взять можно [url=ftp://mirror.yandex.ru/slackware/slackware-14.0/source/a/kbd/sources/kbd-1.15.3.tar.xz]отсюда[/url].
PS. В тарболе шрифт лежит несжатым, поэтому после распаковки шрифта нужно его сжать:
Ещё раз про русификацию...
1. Мне нужно только переключение русского в клавиатуре.
2. Читать русские тексты и названия файлов по русски.
3. Но вот то, что у меня в mc начинает писать в колонках "январь", это мне совершенно не хочется,
и сообщения из консоли я тоже хочу оставить английскими.
4. Установил Opera и там совершенно нельзя страницы читать, всё в иероглифах, хотя менял кодировки внутри приложения.
При этом в Firefox всё чётко..
5. Какие кодировки необходимо включить в сборку ядра?
И до меня туго что-то доходит что такое локаль. Вот видимо локаль мне нужна английская как раз
yars@localhost:~$ cat /etc/profile.d/lang.sh
#!/bin/sh
# Set the system locale. (no, we don't have a menu for this ;-)
# For a list of locales which are supported by this machine, type:
# locale -a
# en_US is the Slackware default locale:
export LANG=ru_RU.UTF-8
# 'C' is the old Slackware (and UNIX) default, which is 127-bit
# ASCII with a charmap setting of ANSI_X3.4-1968. These days,
# it's better to use en_US or another modern $LANG setting to
# support extended character sets.
#export LANG=C
# There is also support for UTF-8 locales, but be aware that
# some programs are not yet able to handle UTF-8 and will fail to
# run properly. In those cases, you can set LANG=C before
# starting them. Still, I'd avoid UTF unless you actually need it.
#export LANG=en_US.UTF-8
# Another option for en_US:
#export LANG=en_US.ISO8859-1
# One side effect of the newer locales is that the sort order
# is no longer according to ASCII values, so the sort order will
# change in many places. Since this isn't usually expected and
# can break scripts, we'll stick with traditional ASCII sorting.
# If you'd prefer the sort algorithm that goes with your $LANG
# setting, comment this out.
export LC_COLLATE=C
2) по причине (1) нужно передавать ядру при загрузке параметр:
Уже довольно давно не нужно, точнее нужно в обратном случае, когда консоль нужна неюникодная (vt.default_utf8=0). Начиная с версии ядра 2.6.24 консоль по умолчанию в utf8, до этой версии -- однобайтовая.
А вот тут на самом деле только 2 варианта:
1) использовать кодировку локали как в именах файлов локальной файловой системы
2) перекодировать имена файлов локальных ФС в используемую кодировку локали (см. convmv для облегчения задачи).
Если для "чужих" ФС, например, NTFS или сетевых SMB, драйверы предусматривают параметры, позволяющие привести их кодировку в кодировку хоста в целях обеспечения совместимости, то для родных ФС эта задача явно лишняя.
Для определения кодировки имён на ФС можно пофильтровать вывод ls через iconv:
text
$ ls *.txt | iconv -f koi8r
$ ls *.txt | iconv -f iso-8859-5
$ ls *.txt | iconv -f cp1251
$ ls *.txt | iconv -f cp866
$ ls *.txt | iconv -f utf8