Cygwin
Cygwin是一款用于在Windows上模拟Linux环境的软件,运行Cygwin后,就可以得到一个类似Linux的Shell环境,它可以作为那些虚拟机软件的一个部分替代品。Cygwin对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作是非常有帮助的。
中文名:UNIX模拟环境
外文名:Cygwin
开发者:cygnussolutions公司
类型:*软件,GNU软件包移植
最新版本:1.7.32(2014年8月14日)
运行平台:Windows
始于:1995年
1、软件介绍
cygwin
Cygwin是一个在windows平台上运行的类UNIX模拟环境,是cygnussolutions公司开发的*软件(该公司开发的著名工具还有eCos,不过现已被Redhat收购)。它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。
Cygwin提供一个UNIX模拟DLL以及在其上层构建的多种可以在Linux系统中找到的软件包,在WindowsXPSP3以上的版本提供良好的支持。Cygwin主要由RedHat及其下属社区负责维护。
2、组成模块
cygwin
Cygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB),这样可以进行简单的软件开发;还有一些UNIX系统下的常见程序。2001年,新增了XWindowSystem。
另外还有一个名为MinGW的库,可以跟Windows本地的MSVCRT库(WindowsAPI)一起工作。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对POSIX规范的实现没有Cygwin库完备。
但糟糕的是,Cygwin不支持Unicode。实际上,除了当前Windows系统以及OEMcodepages(例如,一个俄语用户,他的代码页是CP1251和CP866,而不能是KOI8-R、ISO/IEC8859-5、UTF-8等),Cygwin对其他字符集都不支持。Cygwin的较新版本可以通过自带终端模拟器的设置来满足显示UTF-8和更多代码页的功能。
RedHat规定,Cygwin库遵守GNUGeneralPublicLicense,但也可以跟符合开源定义的*软件链接。RedHat另有价格不菲的许可协议,这样使用Cygwin库的专属软件,就可以进行再发布。
3、工作机制
cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwindll),把win32api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于win32api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。
4、安装教程
cygwin
1、双击运行cyg_win_setup.exe安装程序安装时,请用管理员账户安装(你的电脑的登录用户是Administor身份)!!安装过程中,有时候会停止不动,不要强行关闭,不是死机,只是进行的很慢!
2.选择"InstallfromLocalDirectory"安装;
3、选择安装包时不建议都选上,因为安装时间较长、占用磁盘空间过大。
(OpenSSL和OpenSSH-------sshd的服务包、
cygrunsrv------cygwin的服务包、
sed------BaseCategory下的,方便在ecliPSe使用Hadoop
vim---EditorsCategory下的,方便在Cygwin上修改分配置文件
subversion------DevelCategory下的)
4、配置环境变量时,JAVA_HOME指向jdk安装目录,Path路径中添加JDK的bin目录、jre的bin目录和Cygwin的bin目录,usr的sbin目录;
(变量名为:CYGWIN,变量值为:ntsecmintty(tty1.17版本不支持tty)
或者不添加环境变量,而是直接修改cygwin.bat文件,在@echooff之后加入“setCYGWIN=ntsecmintty“即可。不设置在安装ssh-host-config时也是需要输入的)
5、建议修改.sh文件时,使用vi命令修改。
【安装成功后注意:】
1、第一次运行cygwin会产生home/用户名文件夹,在这个文件夹下(c:\cygwin\home\当前用户)生成三个配置文件,.bashrc,.bash_profile和.inputrc文件,这三个文件中最重要的是.bashrc文件,用户以后要自定义环境变量要用到该文件。
(使用CygwinTerminal,更改其相关属性option,相关信息会生成在.minttyrc文件中)
2).locale是查看本地编码
修改Cygwin编码
Cygwin中文乱码:
右键--option---text--手动修改---Locale(zh-GN),Characterset(GBKChinese);
固定修改:
cygwin设置中文
cygwin\home\用户名\.bashrc
#让ls和dir命令显示中文和颜色
aliasls='ls--show-control-chars--color'
aliasdir='dir-N--color'
#设置为中文环境,使提示成为中文
export
#输出为中文编码
exportOUTPUT_CHARSET="GBK"
cygwin\home\username\.inputrc
#可以输入中文
setmeta-flagon
setoutput-metaon
setconvert-metaoff
#忽略大小写
setcompletion-ignore-caseon
3).对于cygwin1.71版本,CYGWIN=tty是不再支持!
若之前使用的是这个tty环境变量,重新安装注册表中不会自动更新
打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sshd\Parameters\Environment,编辑修改字符串的值【修改成你现在cygwin的执行程序的路径】
5、使用方法
cygwin
1、cygwin使用心得
A).在cygwin里访问Windows盘
cd/cygdrive/c
cdc:
2、整合cygwin命令到Windows中
假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)
就可以直接在cmd.exe下面执行tarczvfxxx.tgz./
基本上所有的命令都可以用了,包括ls,more,less,find,grep等。
3、使用TGZ备份
将cygwin的BIN加入到PATH
建一个BAT文件:
@echooff
d:
cdd:\website\8thmanage
tarczvf8thmanage.tgz8thmanage
4.恢复Cygwin快捷方式
由于某些原因,不小心把Cygwin的快捷方式删掉了,但又找不到原程序的位置。很多人(包括本人)很受挫,索性把Cygwin重装。但是Cygwin里面辛辛苦苦建立起来的开发环境却因此一去不复返。岂不痛哉?
这里介绍手动创建Cygwin的快捷方式。
(1)首先说明一点,Cygwin的快捷方式实际上是指向一个名为Cygwin.bat的批处理文件,而不是大家常见到的.exe文件。其实原理是一样的,批处理文件跟exe文件一样都是可执行文件,不同的是现在批处理很少见了,而安全防卫软件通常就把批处理文件当成有问题程序给删掉了。
(2)找到Cygwin安装文件夹,本人安装在D:\cygwin,注意这个文件应该是真正的程序存放位置,这个目录下必须有这几个文件夹:bin,cygdriver,dev,etc,home,lib…。
现在在刚才的目录下(D:\cygwin)创建文件“Cygwin.bat”,注意:后缀一定是.bat。
然后编辑此文件,在其中加入如下代码:
@echooff
(此行是空格)
D:
chdirD:\cygwin\bin
setLANG=en_US.utf8
bash–login-i
最后给此文件创建快捷方式到桌面
现在工作基本完成了,唯一不足的是刚才创建的快捷方式图标是刚才的批处理文件的图标,而不是原先安装时的图标。
(3)在刚才的文件夹(D:\cygwin)下找到Cygwin.ico,正是这个图片。
现在到刚才的快捷方式上:右键–>属性–>更改图标–>浏览–>找到Cygwin.ico–>确定
6、.命令--help查看该命令的帮助;
文件/目录权限设置命令:chmod这是Linux系统管理员最常用到的命令之一,
它用于改变文件或目录的访问权限。该命令有两种用法:用包含字母和操作符表达式的文字设定法其语法格式为:chmod文件/目录名其中who表示对象,是以下字母中的一个或组合:u:表示文件所有者g:表示同组用户o:表示其它用户a:表示所有用户opt则是代表操作,可以为:+:添加某个权限-:取消某个权限=:赋予给定的权限,并取消原有的权限。
推荐阅读