cygwin个性化配置

配置 cygwin 中的服务程序

详细情况阅读 /usr/share/doc/Cygwin/cygserver.README,要让一个apache httpd或者 proftpd成功运行,在winxp下:

  • 需要把 /bin/cygrunsrvLocalSystem 的身份设置为系统服务,最简单的方法就是运行脚本 /usr/bin/cygserver-config。这将在 “Control Panel > Admin Tools > Services” 里边出现一个名为 CYGWIN cygserver 的服务项目。
  • 然后设置环境变量 CYGWIN,最简单的方法就是在 cygwin.bat 中添加一行: set CYGWIN=server

配置服务或应用程序之前,阅读 /usr/share/doc 中罗列的文档。

配置 apache httpd2 服务

配置 httpd2 很简单,直接用 setup 的安装程序安装好 httpd2。然后运行如下命令即可:

apachectl2 start

要是找不到 apachectl2,看看 /usr/sbin 有没有加入到 PATH 中。

配置 proftpd 服务

阅读 /usr/share/doc/proftpd-1.2.10/* 下的一堆文档,按照配置来,先test。

配置应用程序

配置rxvt

Windows自带的cmd实在太难用了,而且中文乱码问题不好处理,所以rxvt是一个很好的解决方案。这里是term颜色配置,写入 ~/.Xdefaults

Rxvt*title:             Cygwin-Rxvt
Rxvt*geometry:          82x24-120+20
Rxvt*background:        #BFDFBF
Rxvt*foreground:        #001123
Rxvt*scrollBar_right:   true
Rxvt*colorBD:           1
Rxvt*font:              Courier New
Rxvt*blodFont:          Courier New
Rxvt*saveLines:         2000
Rxvt.backspacekey:      ^?
Rxvt*loginShell: True
!! VIM-like colors
Rxvt*color0:    #000000
Rxvt*color1:    #911B08
Rxvt*color2:    #00A800
Rxvt*color3:    #DD0000
Rxvt*color4:    #0000A8
Rxvt*color5:    #A800A8
Rxvt*color6:    #00A8A8
Rxvt*color7:    #D8D8D8
Rxvt*color8:    #B5613B
Rxvt*color9:    #966BEB
Rxvt*color10:   #00A800
Rxvt*color11:   #FFFF00
Rxvt*color12:   #0000A8
Rxvt*color13:   #A800A8
Rxvt*color14:   #00A8A8
Rxvt*color15:   #B5613B

使用cygwin.bat脚本运行rxvt:

@echo off
set CYGWIN=server
set HOME=d:\MyDoc
d:
chdir d:\cygwin\bin
rxvt -title "Cygwin-Rxvt" -sr -sl 2000 -tn rxvt-cygwin -fn "bitstream vera sans mono-19" -e /bin/bash -login

定制提示符

编辑 ~/.bashrc

PS1="`whoami`@`hostname | sed 's/..*//'`"
PS1="[e[32;1m]${PS1}[e[0m]:[e[31;1m]w[e[0m]n"
case `id -u` in
0) PS1="${PS1}# ";;
*) PS1="${PS1}$ ";;
esac

解决中文乱码

设置locale为Windows默认GBK,避免中文乱码:

export LC_CTYPE=zh_CN.gbk
export CHARSET=GBK

~/.inputrc 里加入中文编码支持:

# Allow 8-bit input/output
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

设置alias:

alias ls='ls -hF --color=tty --show-control-chars'

与Emacs搭配

cygwin能够提供Emacs在Windows环境下依赖的一系列工具,比如find、grep、diff等等,但还远远说不上完美。

Shell

因为Emacs运行外部命令和变量exec-path有关系,所以只需指定bash的路径即可,无需额外配置Windows的环境变量。可以让Cygwin inferior shell跑起来,但是补全有些问题。

(setq explicit-shell-file-name "d:/Cygwin/bin/bash.exe")
(setq shell-file-name "bash")
(setq explicit-bash.exe-args '("--noediting" "--login" "-i"))
(setenv "SHELL" shell-file-name)
(add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m)

遗憾的是M-x term无法工作,原因可能是stty和Windows环境不能协调工作,具体参见函数 term-exec-1,有如下错误提示:

/bin/stty: standard input: Inappropriate ioctl for device

进入term之后,能够运行命令,但是排版混乱,具体还不清楚是什么原因。