前言
cygwin是让windows获得unix/linux部分功能的一个神器,本文是个人的一些经验,推荐初学者参考。有一经验的读者也可参阅斧正。
cygwin是什么?
cygwin是运行在windows下的GNU/linux环境,包含了几乎所有的常用Linux软件,使用上跟linux高度一致。由RedHat主导开发。cygwin官网
cygwin安装
到cygwin官网上下载安装程序: setup-x86.exe (32-bit ) or setup-x86_64.exe (64-bit )。双击运行,有安装向导,照做即行。
其中有两个路径一个url,有必要关注一下:
Root Directory, cygwin将安装到这个目录,推荐装到 D:\cygwin (原因:重装windows通常不影响D盘;目录层级浅,找起来方便)
Local Package Directory, 安装向导下载的安装包存储路径,放到 F:\cygwin_download 或你希望的目录,cygwin安装后其中的文件就可以删除了,不过如果硬盘有空间,留着也不多,毕竟下次添加/更新安装包时,有可能还用得着。另外安装程序 setup-x86.exe 或 setup-x86_64.exe 也推荐放到这个目录里,cygwin里添加/删除包时还要用它(它相当于yum/apt-get,不过是gui版的,不是cli)
Choose A Download Site, 为了更快的下载安装包,推荐选择国内的镜像站点,自行添加镜像url也是可以的,比如下面这几个:
- http://mirrors.neusoft.edu.cn/
- http://mirrors.ustc.edu.cn/
- http://mirrors.aliyun.com/
- http://mirrors.163.com/
安装后,默认会在桌面放一个图标,可以将该快捷方式复制到你习惯的地方,比如快速启动栏。
默认情况下,cygwin只安装要最小化的环境,需要装哪些软件,使用 setup-x86.exe 或 setup-x86_64.exe安装器另外安装。
cygwin使用
点桌面图标快捷方式,进入cygwin命令行窗口,假装你在linux下,尽情使用吧,因为绝大多数操作都是兼容的。
cygwin文件系统与windows目录之间的对应
- cygwin的根目录,其实就是cygwin安装目录,按前面的目录就是 D:\cygwin.
- windows下的盘符,已被挂载到 /cygdrive/c, /cygdrive/d, /cygdrive/x ...
实用技巧
- cygwin窗口里,鼠标圈选的,就自动复制到windows剪贴板。
- Shift + Insert,从windows剪贴板粘贴。
- 双击自动选择连续内容,很方便。
- 单引号括起来的windows风格的路径。举例快速进入目录 F:\software\tools 可以这样 cd 'F:\software\tools'
- Ctrl + 鼠标滚轮,调整字体大小。
- 窗口标题栏点右键 - Option, 还有一系列选项。
一些事实
- 需要注意的是,cygwin下的软件,都是.exe格式的,原生的linux二进制文件是不能运行的。如果cygwin里没有要用的软件,可以尝试在cygwin下从源码编译。
一些经验
- cygwin本身是支持x-window的,不过效果实在不怎么样,使用还很烦琐;我想你肯定看不下去、而且用不下去的。所以,不推荐安装图形化的工具了,占磁盘空间而用又没用。如果你使用gitk以图形化查git历史的话,参考 在cygwin里调用windows版git-scm的gitk/git-scm与cygwin协同工作
- 网上有些文章建议把cygwin目录加入到windows环境变量,不推荐修改,毕竟cygwin与windows的cmd是不同的东西,混用会有些乱,有可能带来莫名其妙的问题。
- 可以通过 cd c: 进入windows的c盘,甚至可以通过 cd C:\tools 进入子目录;但列强反对这么用,使用windows风格的路径,请一定用单引号括起来。原因 反斜线在bash里当作转义符使用。这样 cd C:\tools 事实上相当于 cd C:tools,这样写cygwin认可。而cd c:\tools\disk相当于cd: c:toolsdisk,自然是错误的。
- 默认情况下,windows的PATH环境变量,会被追加到cygwin的PATH环境变量中。于是,在cygwin下可以直接调用相关的windows程序。然而,这会造成一些麻烦。比如,安装过windows版ssh客户端,但没有安装cygwin版,在cygwin可以直接使用ssh,但它并不使用 ~/.ssh/下的密钥或匹配文件。这是自然而然的,并且是合理的,可如果不知道“是windows版ssh在工作”的这个事实,这会很令人困惑。