转自 http://homewj.spaces.live.com/Blog/cns!1pav0HyE-t7RIT4zpRdid3PQ!113.entry
cygwin 汉化即其他新特性
使用cygwin的原因
最近在研究java的源码,源码官方的编译文档里提到一个unix环境到windows移植的
工具包MKS,在网上百觅不得,于是想起了久违的cygwin,使用之后居然能启动java
那庞大makefile系统,于是觉得有必要写点东西向大家推介推介。
安装
从http://www.cygwin.com/下载网络安装setup.exe,该安装程序会一步步提示,只
是选取安装包的那一节自己注意点,针对自己的需要看看有什么要额外装的。比如
编译java源码时就要多选取几个:perl、gawk、make、binutils(好像就这几个,
反正编译时会有提示找不到那个执行程序,届时用setup.exe到网上再下就可以了。
),另外vim这个包是linux下编辑文本必备的,在windows下的cygwin中也是如此。
cygwin环境汉化
修改三个文件:
1、~/.bashrc BASH的配置文件
# base-files version 3.4-2
# WARNING
#
# IF THIS .bashrc IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM. IT BECOMES YOUR RESPONSIBILITY.
#
# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/skel/.bashrc
# User dependent .bashrc file
# See man bash for more options...
# Don't wait for job termination notification
# set -o notify
# Don't use ^D to exit
# set -o ignoreeof
# Don't put duplicate lines in the history.
# export HISTCONTROL=ignoredups
# Ignore some controlling instructions
# export HISTIGNORE="[ ]*:&:bg:fg"
# Some example alias instructions
# If these are enabled they will be used instead of any instructions
# they may mask. For example, alias rm='rm -i' will mask the rm
# application. To override the alias instruction use a \ before, ie
# \rm will call the real rm not the alias.
# Interactive operation...
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
# Default to human readable figures
# alias df='df -h'
# alias du='du -h'
# Misc
# alias less='less -r' # raw control characters
# alias whence='type -a' # where, of a sort
# alias grep='grep --color' # show differences in colour
# Some shortcuts for different directory listings
# 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中取\usr\share\locale\zh_CN\LC_MESSAGES中*.mo文件,如果提示信息中
# 的字符集为utf8则会显示有误(不知何解?,magiclinux无类似情况),为gb2312
# 则正常,大概与gettext这个模块有关,这个模块的作用是使linux程序提示信息
# 区域话,即不同地区用不同语言,即常说的i18n;像我们设置的zh_CN.GBK,“.”
# 之前部分“zh_CN”表示地区即“中国大陆”,后面部分“GBK”表示字符集编码,
# 像我们下面的设置,当程序调用时会到\usr\share\locale\目录中查找,发现地
# 区为“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
# 解决ls中文显示问题
alias ls='ls --show-control-chars'
alias dir='ls --show-control-chars'
alias less='less --raw-control-chars'
# 添加清屏处理
alias clear='clearn'
alias clr='clearn'
# 添加whereis的别名
alias whereis='which'
2、~/.inputrc BASH中命令行输入出控制的配置文件
# base-files version 3.4-2
# WARNING
#
# IF THIS .inputrc IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM. IT BECOMES YOUR RESPONSIBILITY.
#
# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/skel/.inputrc
# don't beep at me
# set bell-style visible
# the following line is actually
# equivalent to "\C-?": delete-char
"\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
###################### 以下为添加部分 ################################
# 关闭bash命令行8字节字符转义符的转换
set convert-meta off
# 使bash命令行支持8字节字符输入
set input-meta on
# 使bash命令行支持8字节字符输出
set output-meta on
# 让bash的命令行已vi模式执行,屏蔽掉下面一行,BASH的命令行操作
# 就像vi中编辑文本一样,默认为INSERT模式,可以在BASH启动后直接
# 输入:set -o vi,来启动该开关,set +o vi关闭该模式,但在cygwin
# 中调用set +o vi关闭时会出现一些乱码,估计也是一个BUG
#set editing-mode vi
3、~/.vimrc vim的资源控制文件
" 显示语法高亮度
:syntax on
" 设置字符编码,可使显示中文光标移动和字符删除操作变为双字节
:set encoding=cp936
" 设置vim中TAB缩进为4个空格
:set ts=4
cygwin的新特性
windows驱动器的管理
cygwin启动后,windows中驱动器自动挂接到cygdrive目录。
比如:
wj@wj-server1 ~
$ ls /cygdrive
c d e
cygdrive是一个虚拟目录,它在注册表中设置。
看看这个:
wj@wj-server1 ~
$ regtool get '\HKLM\software\Cygnus Solutions\Cygwin\mounts v2\cygdrive prefix'
/cygdrive
regtool是cygwin中注册表的操作工具,get选项会把上面注册表项的值显示出来。
我们把/cygdrive该成/media试试。
wj@wj-server1 ~
$ regtool set '\HKLM\software\Cygnus Solutions\Cygwin\mounts v2\cygdrive prefix' '/media'
重启cygwin
wj@wj-server1 ~
$ ls /media
c d e
在cygwin中也可以这样操作驱动器,比如我们要进入到E盘
wj@wj-server1 ~
$ cd e:
wj@wj-server1 /media/e
$
wj@wj-server1 /media/e
$ ls
DZSW20050606.rar EDUMS20050606.rar cvs ftp.txt music temp
Downloads Recycled ebook job oracle work
EDUMS20050529.rar ctais film linux rav.rar 全国DNS地址.txt
直接输盘符cd就可以了。等同于下面的操作。
wj@wj-server1 ~
$ cd /media/e
wj@wj-server1 /media/e
$
另外, '\HKLM\software\Cygnus Solutions\Cygwin\mounts v2\'下面的项可以制
定目录的连接关系,比如该项下面有一个项叫‘/’该项中有个值叫‘native’为字
符串‘C:\cygwin’,cygwin启动的时候就会将根目录‘/’指向‘C:\cygwin’本地
目录。所以你无论从那个目录启动bash.exe程序,根目录是不会变的,以前的好像
不是,默认的关联还有‘/usr/bin’指向‘C:\cygwin/bin’所以cygwin中/usr/bin
和/bin其实是同一个目录,因为根目录/为‘C:\cygwin’,‘/usr/lib’指向
‘C:\cygwin/lib’,同理/usr/lib与/lib为同一个目录。