LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2292|回复: 17

LFS终端的中文显示问题

[复制链接]
发表于 2006-1-26 18:56:06 | 显示全部楼层 |阅读模式
在装BLFS时,按照BOOK上所说,在/etc/profile.d/i18n.sh中写入以下内容:
# Set up i18n variables
export LC_ALL=zh_CN.GB18030:zh_CN.GB2312:zh_CN
export LANG=zh_CN.GB18030:zh_CN.GB2312:zh_CN
export G_FILENAME_ENCODING=@locale

字符终端还是不能显示中文,要实现中文显示,是不是要装什么软件,比如cce什么的。
还没装XWindows,只是纯字符界面下。上面那个文件的配置是不是为XWindows下终端设置的?应该就是所谓非交互终端吧.
 楼主| 发表于 2006-1-26 20:44:03 | 显示全部楼层

另一个问题

LFS启动的时候,总是重复出现如下的信息:
input: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:1d.1-2
drivers/usb/input/hid-core.c: input irq status -84 received
drivers/usb/input/hid-core.c: input irq status -84 received
drivers/usb/input/hid-core.c: input irq status -84 received
hub 1-0:1.0: state 5 ports 8 chg ff00 evt 0010
……………………
以及:
fill_kobj_path: path = '/class/vc/vcs1'
kobject_hotplug: /sbin/udevsend vc seq=987 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/class/vc/vcs1 SUBSYSTEM=vc
kobject vcsa1: registering. parent: vc, set: class_obj
kobject_hotplug
这个也重复出现

好像是我USB键盘的问题。不过系统启动完后USB键盘却能正常使用。刚装完LFS的时候还没有这些错误,USB设备也都能正常使用。这几天也没做大的改动,只是配置了一下环境变量什么的。
附上dmesg的输出信息。
dmesg_output.txt  文件是LFS系统的启动信息。dmesg_RHEL.txt  是原宿主系统的启动信息。宿主系统启动很正常。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2006-1-27 00:24:28 | 显示全部楼层
字符终端还是不能显示中文,要实现中文显示,是不是要装什么软件,比如cce什么的。

当然了,默认的 blfs里没有中文环境, 三个选择, cce ,zhcon, unicon .好像只有cce才支持unicode.

还没装XWindows,只是纯字符界面下。上面那个文件的配置是不是为XWindows下终端设置的?应该就是所谓非交互终端吧.

不是,这是全局作用的,不管开不开XWindow.
回复 支持 反对

使用道具 举报

发表于 2006-1-27 07:18:41 | 显示全部楼层
用中文,我还是用X。懒得装其他的软件,主要没这个需求。一般都在X下工作的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-27 23:20:48 | 显示全部楼层

交互与非交互终端下的中文显示

刚才搞3搞4又搞7搞8了一下。。。发现以下问题

我的/etc/profile.d/i18n.sh中的内容如下:
---------------------
# Set up i18n variables
export LC_ALL=zh_CN.GB18030
export LANG=zh_CN.GB18030
export G_FILENAME_ENCODING=@locale
----------------------
在其他配置文件中,没有设置LANG变量。这样,无论在交互终端(不在X下)还是非交互终端(X下),都显示中文,交互终端下中文显示为乱码。
在交互终端的配置文件~/.bash_profile中(或者/etc/profile)中添加如下内容:
export LANG=en_US.utf8
这样,在交互终端下,提示语言为英文,而非交互终端中仍为中文。

我在安装一些软件时,留意到configure或者make的时候,有检测LANG变量,因i18n.sh文件中为zh_CN_gb18030,所以检测到的是这一值。(软件安装是在非交互终端下进行的)。

我设想的配置方法有如下两种:
case 1:
i18n.sh文件中LANG=zh_CN.GB18030。只在~/.bash_profile中(或者/etc/profile)中添加 export LANG=en_US.utf8。这样,在X下软件安装检测到的LANG就为zh_CN.gb18030

case 2:
i18n.sh文件中LANG=en_US.utf8。在~/.bashrc中添加 export LANG=zh_CN_gb18030。这种情况下,交互终端显示英文,而X下显示中文,软件安装检测到的LANG应该就是zh_CN.gb18030

上面所说的X只是宿主系统中的X Windows。BLFS中的X还没装
这两种设置方法哪种更好一点???

这个问题似乎比较菜。。。但是我在摸索中还是对配置有了进一步了解。。。望大虾赐教。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-29 01:14:00 | 显示全部楼层
实践证明上面的设想是错误的。。。郁闷。。。。

有没有什么办法能够使X系统下语言为中文,而字符界面下是英文的???
回复 支持 反对

使用道具 举报

发表于 2006-1-29 06:02:04 | 显示全部楼层
在term下开一个窗口,和从console中登录一个,有啥区别。?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-29 16:20:20 | 显示全部楼层
我理解错了。。。不好意思。。。
在网上搜到如下内容:
1.交互式激活
指其标准输入和输出都连接在终端上.又分为三种类型:login,非login,posix
以及受限的shell.
确定一个shell是否是交互式的可以通过检测$PS1环境变量.
(1) 当Bash作为login shell被激活时,它将依次读取并执行以下文件:
/etc/profile,~/.bash_profile,~/.bash_login,~/.profile
使用--noprofile选项激活Bash可以禁止其读任何初始化文件
在退出时执行 ~/.bash_logout 文件
(2) 当Bash作为非login shell被激活时,它将读取并执行~/.bashrc
使用--norc选项激活Bash可以禁止执行任何初始化文件,使用
--rcfile file可以指定执行的初始化文件.
(3) 当Bash作为posix模式被激活时,它将先检查$ENV变量是否定义.
若定义,Bash读取并执行有$ENV变量扩展而得到的文件,否则不再
执行任何初始化文件。
(4) 当Bash作为受限模式被激活时,它除了禁止某些操作以外,其他行为
于其他模式相同.受限操作有:改变目录,修改$SHELL和$PATH变量,
运行exec,以绝对路径运行程序以及使用重定向.Bash 1.x中不包含
受限模式.

我想问一下,什么时候作为login shell被激活?什么时候又作为非login shell被激活?什么时候作为作为受限模式被激活??

搜了很久。。找不到解释。。。
回复 支持 反对

使用道具 举报

发表于 2006-1-29 22:28:57 | 显示全部楼层
login 就是 login shell
bash xxx.sh  就是 非login shell
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-29 23:30:28 | 显示全部楼层
这么说在X下开的N个终端算是非LOGIN shell吧。而字符界面下的是LOGIN SHELL。。。对吧?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表