
Моя система - lubuntu, все китайские символы отображаются правильно, и их можно правильно вводить в gedit, leaf, firefox.
Их нельзя вводить в моей консоли bash, как это исправить?
locale
LANG=zh_CN.UTF-8
LANGUAGE=
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
Вот мой файл /etc/bash.bashrc.
[ -z "$PS1" ] && return
shopt -s checkwinsize
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/lib/command-not-found -- "$1"
return $?
elif [ -x /usr/share/command-not-found/command-not-found ]; then
/usr/share/command-not-found/command-not-found -- "$1"
return $?
else
printf "%s: command not found\n" "$1" >&2
return 127
fi
}
fi
Вот мой файл /root/.bashrc.
export PYTHONPATH=%PYTHONPATH%:/usr/local/python3.4/lib/python3.4/site-packages
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
Вот мой обычный файл конфигурации bashrc.
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
export PYTHONPATH=%PYTHONPATH%:/usr/local/python3.4/lib/python3.4/site-packages
И я могу скопировать китайский иероглиф в буфер обмена и вставить его в консоль терминала, китайский иероглиф может быть отображен из моей вставки.
Мой терминал - lxterminal.
Метод ввода - fcitx.
Китайский иероглиф можно ввести в XTerm.
Теперь, чтобы войти в систему с именем пользователя root, вот мой рабочий стол.
Нажмите ctrl+alt+F1, введите root и его пароль, войдите в чистый текстовый интерфейс и введите команду startx
, появится другой рабочий стол.
Китайский иероглиф можно ввести в его lxterminal. вопросы:
Почему есть две фотографии рабочего стола для одного и того же пользователя root
?
Почему китайский иероглиф можно ввести в следующем lxterminal?
Теперь нажмите ctrl+alt+F7, вернитесь на предыдущий рабочий стол,
В lxterminal нельзя ввести китайский символ.
решение1
В ядро Linux встроена программа эмулятора терминала. Она построена на основе буфера кадра и устройств событий ввода, внутренне, и представляет себя системам режима приложений как рядвиртуальный терминал ядраустройства /dev/tty1
и т. д. Строго говоря, это необязательнотвойконсоль, который может быть последовательным терминальным устройством. Но давайте пропустим это, потому что ответ на этот вопрос подразумевает знание того, какое терминальное оборудование находится на другом конце последовательного канала.
Программа эмулятора терминала, встроенная в ядро Linux, не поддерживает методы ввода.
Таким образом, чтобы иметь терминал, отличный от X11, с методами ввода, вам нужно запуститьвиртуальный терминал пользовательского пространствакоторый использует буфер кадра и устройства событий ввода. Они отключают эмулятор терминала в ядре от этих устройств, в то время как сами используют их.
Эмуляторы виртуального терминала пользовательского пространства, поддерживающие методы ввода, включают:
- zhcon(Пакет Ubuntu)
- fbterm(Пакет Ubuntu) и его ответвления, такие какjfbterm(Пакет Ubuntu)
дальнейшее чтение
решение2
Для входа в систему под обычным именем.
Для входа в систему с правами root.
Удалить три строки в /etc/profile, /etc/bash.bashrc, /root/.bashrc и ~/.bashrc.
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
vim /etc/X11/Xsession.d/25xchinput
export LAGN=zh_CN.utf8
export LC_CTYPE=zh_CN.utf8
export XMODIFIERS=@im=fcitx
fcitx &