cygwinhomeusername.bashrc
# 让ls和dir命令显示中文和颜色
alias ls='ls --show-control-chars --color'
alias dir='dir -N --color'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GBK"
# 输出为中文编码
export OUTPUT_CHARSET="GBK"
cygwinhomeusername.inputrc
# 可以输入中文
set meta-flag on
set output-meta on
set convert-meta off
# 忽略大小写
set completion-ignore-case on
, cygwin.bat:
@ECHO OFF
SET MAKE_MODE=UNIX
SET PATH=d:cygwinin;%PATH%
set HOME=d:home
bash
2, 在~目录下的.bashrc文件中加入:
# 让ls和dir命令显示中文和颜色
alias dir='dir -N --color'
alias less='/bin/less -r'
alias ls='/bin/ls -F --color=tty --show-control-chars'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GB2312"
# 输出为中文编码
export OUTPUT_CHARSET="GB2312"
3,bash将到D:home目录下寻找初始化文件。 缺省情况下,bash命令行不能输入汉字,必须在~目录下建立文件.inputrc,内容如下:
# 忽略大小写
set completion-ignore-case on
# 可以输入中文
set convert-meta off
set input-meta on
set output-meta on
跟emacs存在同样的问题,就是显示不了uft8编码下的汉字
Cygwin工具是GNU工具在WIN32平台上的移植版本,它尽可能地遵循POSIX标准。其中包括C/C++编译器GCC,textutils,fileutils,bash等等。本文将阐述如何在Cygwin(B20)中使用中文。
Cygwin通过cygnus.bat(位于X:cygnuscygwin-b20)启动bash,内容如下: @ECHO OFF
SET MAKE_MODE=UNIX
SET PATH=c:cygnusCYGWIN~1H-I586~1in;%PATH%
bash
在其中加入(bash之前)一句: set HOME=X:homename
X:为盘符,homename为已存在的目录名,例如C:myHome。bash将到X:homename目录下寻找初始化文件。 缺省情况下,bash命令行不能输入汉字,必须在X:homename目录下建立文件.inputrc,内容如下: set meta-flag on
set convert-meta off
set output-meta on这几行主要是实现命令行上实现汉字的输入以及显示。 比如想输入汉字的文件名等等。
注意:在Cygwin-B20中.inputrc必须为UN*X文件格式。
bash在Windows 9X中不能接受来自DOS窗口的汉字输入。
为了让less命令显示汉字在X:homename.bashrc中加入: export LESSCHARSET=latin1
为了让ls命令显示汉字文件和目录名在X:homename.bashrc中加入: alias ls='ls -N --color'
#====================================.bashrc 2009-10-09 cygwin 1.70==================================
# Shell Options
# #############
alias ls='ls -hF --color=tty' # classify files in colour
alias dir='ls --color=auto --format=vertical'
alias vdir='ls --color=auto --format=long'
alias ll='ls -l' # long list
alias la='ls -A' # all but . and ..
alias l='ls -CF' #
# Some example functions
# function settitle() { echo -n "^[]2;$@^G^[]1;$@^G"; }
###################### 以下为添加部分 ################################
# cygwin中取usrsharelocalezh_CNLC_MESSAGES中*.mo文件,如果提示信息中
# 的字符集为utf8则会显示有误(不知何解?,magiclinux无类似情况),为gb2312
# 则正常,大概与gettext这个模块有关,这个模块的作用是使linux程序提示信息
# 区域话,即不同地区用不同语言,即常说的i18n;像我们设置的zh_CN.GBK,“.”
# 之前部分“zh_CN”表示地区即“中国大陆”,后面部分“GBK”表示字符集编码,
# 像我们下面的设置,当程序调用时会到usrsharelocale目录中查找,发现地
# 区为“zh_CN”则到该目录中查找程序对应的*.mo文件,*.mo文件的名称是在调用
# 的程序中设置了的。然后取该语种的对应提示,然后按编码(在mo文件中指明了)
# 处理该文字。
# 当然这些不是自动处理的,要在程序中调用像setlocale、textdomian、gettext
# 这样的函数处理。
# 在cygwin中有些程序,做了下面的设置,因为对应的mo文件中编码为utf8而无法
# 显示,我是直接将它删除,之后程序会因为找不到mo文件而用默认的英文来显示
# 的。(下面的编码设置并没有错,应该是cygwin程序中的BUG,只是设置了LC_ALL
# 就没必要设LANG了,有的文档上面这样写的:))
export set LC_ALL=zh_CN.GBK
export set LANG=zh_CN.GBK
#export set LC_CTYPE=zh_CN.UTF-8
#export set CHARSET=UTF-8
#==================================== bashrc end ==================================
#==================================== .inputrc ==================================
# 控制输入输出的文件 jiangxf [2009-10-09 星期五]
"e[3~": delete-char
# VT
"e[1~": beginning-of-line
"e[4~": end-of-line
# kvt
"e[H": beginning-of-line
"e[F": end-of-line
# rxvt and konsole (i.e. the KDE-app...)
"e[7~": beginning-of-line
"e[8~": end-of-line
# VT220
"eOH": beginning-of-line
"eOF": end-of-line
# 关闭bash命令行8字节字符转义符的转换
set convert-meta off
# 使bash命令行支持8字节字符输入
set input-meta on
# 使bash命令行支持8字节字符输出
set output-meta on
如果是命令行的编码不对也要进行更改
更改方法如下
这个是cmd窗口属性的问题。
要修改注册表才能解 决问题:
有两种方法,第二种比较简单。
方法一:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERConsole\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:000003a8
小说明一下:
十六进制"000003a8"或十进制"936",表示“936 (ANSI/OEM - 简体中文 GBK)”。
十 六进制"000001b5"或十进制"437",表示“437 (OEM - 美国)
方法二:
同时使用:
[HKEY_CURRENT_USERConsole\%SystemRoot%_system32_cmd.exe]
在 注册表里面这个东西估计是运行过英文环境的程序导致的。
删掉这个注册表,cmd就回到中文环境了。