日期:2014-05-16  浏览次数:20599 次

shell脚本及字符集问题
两个问题:
一、for   i   in   `LC_ALL=C   grep   '^[0-9]*.*respawn:/sbin/mingetty '   /etc/inittab   |   sed   's/^.*   tty\([0-9][0-9]*\).*/\1/g '`;   do
            >   /dev/tty$i
            last=$i
done
中:LC_ALL=C是什么含义,起什么作用?
>   /dev/tty$i有什么作用?

二、我安装redhat9时选的字符为中文,导致所有提示为乱码,请问:
        能不能在不重新安装linux情况下,把字符集改为英文?

------解决方案--------------------
1. 记不清了\,大概意思是用C语言能支持的最小的字符集,也就是ascii
2. export LANG=en_US.ascii,可以放到你的sh的profile里(.bash_profile, .profile)
------解决方案--------------------
C_ALL 环境变量控制着某些程序的本地化,使其显示的信息遵循指定国家的惯例。LC_ALL 环境变量设置为 "POSIX "或 "C "(这两者是等价的)

改成英文需要把全局变量LANG改为C,如果你想让某个用户使用中文,可以在个人主目录.bashrc或.bash_profile中设置LANG=zh_CN
------解决方案--------------------
1
> somefile 的意思是清空这个文件.它的作用类似于命令:
echo -n " " > somefile

在 > /dev/tty$i 里, tty$i也是被看作文件. 这条命令的效果你试一下.
我猜是看不出效果
不如你把 > /dev/tty$i 改为 echo "hello,tty$i " > /dev/tty$i