Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2315148
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2010-01-20 13:49:34

注册表可能与前几项东西在完全不沾边. 但实际上有关系.

为了避免反复的下载, 安装cygwin, 尤其是你装一台电脑之后, 我把自己长期调教好的cygwin环境简单压缩为一个文件, 到别的电脑上一个简单的解压就可以使用.

这里面有一点例外: 当时备份cygwin时, 我找到了它对注册表的影响, 把相关的注册表也导出为一个文件, 在新电脑上解压之后的cygwin需要根据解压的具体路径修改一下这个注册表导出文件, 然后双击把注册表文件导入.

问题在于, 如果根本不导入这个注册表文件, cygwin的大部分功能也都可用, 你几乎觉查不到, 只不过bash 命令行上的$HOME指向了 C:\Documents and Settings\Administrator, 而不是 cygwin的home目录下你的用户目录. 这也没引起我的注意, 我只是把常用的.bashrc, .inputrc放在C:\Documents and Settings\Administrator 目录, 看来bash照样会读取.bashrc, .inputrc两个文件.

一个恼人的小问题是, 在bash命令行编辑环境中, 如果一个命令行超出了控制台窗口的边缘, 它不会折行, 我隐约记得这跟readline的配置文件.inputrc中的一项内容相关, 也找到了这个配置项: horizontal-scroll-mode
把它设为off 即可.

但是, 如果你的HOME是 C:\Documents and Settings\Administrator, 即使在 .inputrc中放置了这么一项, 即使用filemon验证用C-X, C-R 时, bash的确重新读取了.inputrc文件, 命令行编辑时的折行仍然不会如愿工作.


在把上述注册表文件导入之后, 再运行bash, 就可以通过 cygwin 的 /home/username/ 目录下的.inputrc清楚地看到 horizontal-scroll-mode选项是如何影响命令行编辑的折行的.


注册表内容如下:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions]

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin]

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]
"cygdrive prefix"="/"
"cygdrive flags"=dword:0000002a

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/]
"native"="T:\\zrf\\cygwin"
"flags"=dword:0000000a

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin]
"native"="T:\\zrf\\cygwin/bin"
"flags"=dword:0000000a

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib]
"native"="T:\\zrf\\cygwin/lib"
"flags"=dword:0000000a

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\Program Options]

路径名要自己根据实际情况修改.

在google上一些关于这个问题的讨论, 有一些讨论倾向于认为是readline的bug, 但似乎没有注意到是上述原因.

我的cygwin bash版本:
3.1.17(6)-release
readline 版本是:
libreadline6-5.1-5

用process explorer查看, bash运行时, 也只依赖于以下DLL:

cygiconv-2.dll
cygintl-3.dll
cygncurses-8.dll
cygreadline6.dll
cygwin1.dll

有关系的应该是readline库.
阅读(2010) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~