Cygwin的使用

2025-12-30 17:18:48 3558

Cygwin的使用

Table of Contents

1. cygwin下访问windows盘符

1.1. 查看windows盘符在cygwin下的映射

1.2. cygpath命令的使用

2. cygwin中用户主目录不一致问题

2.1. 问题描述

2.2. 解决办法

3. 命令行自动补齐忽略文件名大小写

4. 安装新软件git

4.1. 忽略文件权限的可执行位

4.2. 对中文的支持

4.3. SSH服务

4.3.1. 安装putty

4.3.2. 密钥转换

4.3.3. 设置plink为SSH服务器的客户端

4.3.4. 测试

1 cygwin下访问windows盘符

1.1 查看windows盘符在cygwin下的映射

$ mount

C:/cygwin/bin on /usr/bin type ntfs (binary,auto)

C:/cygwin/lib on /usr/lib type ntfs (binary,auto)

C:/cygwin on / type ntfs (binary,auto)

C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)

D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto)

E: on /cygdrive/e type ntfs (binary,posix=0,user,noumount,auto)

1.2 cygpath命令的使用

$ cygpath -u c:\\Windows

/cygdrive/c/Windows

$ cygpath -w /cygdrive/c/Windows

C:\Windows

2 cygwin中用户主目录不一致问题

2.1 问题描述

如果其他软件(如msysGit)为windows设置了HOME环境变量, 会影响到Cygwin中用户主目录的设置, 甚至会造成在Cygwin中的不同命令有不同的用户主目录的情况。

cygwin确定用户主目录的依据是,先查看系统的HOME环境变量, 再查看/etc/passwd中为用户设置的主目录. 而有些cygwin应用(如SSH)却没有先查看HOME环境变量, 而是直接使用/etc/passwd中设置的用户主目录.

2.2 解决办法

不要让其他软件设置的HOME环境变量影响cygwin, 在C:\cygwin\Cygwin.bat的开头添加 set HOME=

3 命令行自动补齐忽略文件名大小写

windows的文件系统是忽略文件名的大小写的。

为使用方便,最好让cygwin的命令行补齐功能也忽略大小写。编辑文件~/.inputrc,删除掉 #set completion-ignore-case on其中的 #,再重新进入cygwin。

4 安装新软件git

重新打开安装cygwin时的setup.exe。在搜索框中输入git,然后选择相关的软件,如,

git, git-gui, git-svn, gitk, stgit

git-completion:Git命令的自动补齐功能

openssh:SSH客户端,因有些git仓库是需要SSH服务访问的

vim: Git的默认编辑器

4.1 忽略文件权限的可执行位

默认,git会跟踪文件的可执行位,但对windows平台而言,这是没用的,甚而是有害的,因为windows平台的其他软件或操作可能会破坏文件的可执行位。

可通过命令禁止git对文件权限的跟踪。

git config --system core.fileMode false

这样,已添加到库中的文件的权限在本地改变时,git不会更新库中的相应文件。

4.2 对中文的支持

版本1.7.x后的Cygwin能很好的支持中文(用locale命令可查看支持的字符),但msysgit的shell环境仍然需要相关的配置。

同linux平台一样,文件名称中包含中文的文件,在工作区状态输出时,中文文件名不能正常显示,而是用八进制字符显示的,为了解决此问题,可执行

git config --global core.quotepath false

4.3 SSH服务

以公钥认证的方式访问Git服务器,是实现Git写操作的最重要的服务。

使用如下命令来生成SSH公钥、私钥对:

$ssh-keygen –C “emailAddress” –t rsa

上述命令执行中,一路选择回车,会生成/home/Administrator/.ssh/。

但是,cygwin下的openssh有一个bug: 使用git克隆来自SSH协议版本库时,偶尔会中断,致使克隆失败。解决办法是,使用plink,具体如下:

4.3.1 安装putty

putty是windows下的开源软件,提供SSH客户端服务,还包括管理公钥的相关工具。

下面几个包含在安装目录中的程序,用于与Git整合,

plink.exe,命令行的SSH客户端,用于替代ssh命令。

puttygen,管理putty格式的私钥,也可用于将openssh的私钥转换为putty格式的私钥。

pageant, ssh认证代理,运行于后台,负责为ssh连接提供私钥访问服务。

4.3.2 密钥转换

将openssh格式的私钥转换为putty格式的私钥。

打开puttygen,加载/home/Administrator/.ssh/id\rsa,会有窗口弹出转换成功的提示,在关闭提示回到puttygen界面后,选择保存私钥,起名为 id\rsa.ppk,保存在/home/Administrator/.ssh中。

4.3.3 设置plink为SSH服务器的客户端

创建脚本文件/bin/ssh-client-plink,内容为:

#!/bin/sh

/cygwin/c/Program \Files \(x86)/PuTTY/plink.exe –T –i C:/cygwin/home/Administrator/.ssh/id_rsa.ppk $*

当git访问ssh服务器时,为使上述脚本被自动调用,执行:=export GITSSH=/bin/ssh-client-plink=

4.3.4 测试

$ssh –T git@github.com

Hi usernameOngithub! You’ve successfully authenticated…..

注意,测试之前应将公钥复制到个人github网页的SSH KEYS中。