您的位置:首页 > 运维架构 > Shell

[整理]cygwin下使用shell时碰到的几个问题

2012-03-13 20:39 309 查看
最近在研究的开源工具包下提供了几个command line工具,通常在/bin目录下提供的是shell script,为了多系统下运行的方便(主要是win),通常也会提供/bat目录,其中包含了与/bin下shell script对应重写后的.bat批处理文件。针对shell script,最简单也是极力推荐的执行方式当然是在*nix环境下了。但是,如果就是想在win下运行怎么办?没错,通常需要cygwin的帮助,cygwin模拟了*nix shell环境,可以执行多数的shell命令。但是,因为毕竟是在win下模拟,环境的差异还是会影响到一些小的细节的处理。
下面是我今天碰到的几个问题

1. 第一个问题,关于java classpath。cygwin下处理win路径时,通常需要把/cygwin作为顶层目录,比如,对于win路径 c:\mypath,其对应的cygwin下路径是 /cygwin/c/mypath。在cygwin下如果往classpath中添加/cygwin/c/mypath,java命令将无法找到classpath,从而提示ClassDefNotFoundError。 cygpath -wp 命令可以将cygwin路径转换为win路径。

$ cygpath -wp /cygdrive/c:/cygdrive/c/classes

c:\;c:\classes

可以参考这个页面 http://www.inonit.com/cygwin/faq/

2. 第二个问题是,在cygwin下编写shell script是,script在执行的时候,其中包含的空行会提示 /r. command not found错误信息。这是win dos与*nix文本编辑方式不同造成的。可以使用cygwin工具dos2unix将script改为unix格式。参考这个页面 http://www.tamilramasamy.com/2008/07/r-command-not-found-in-cygwin.html

3. 第三个问题是, shell基本命令source, exec等的用法。参考http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=218853&page=6#pid1583329 (另外强烈推荐CU上的这个系列“shell十三问”http://bbs.chinaunix.net/thread-218853-1-1.html

总结今天的工作,虽然没有直接在Linux下运行那些脚本,而且其间碰到了很多的错误,但是收获就在于,只要认真搜索,所有的问题都可以解决。尽管如此,还是建议如果想学习shell的话还是从linux下开始吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息