Cygwin中的编辑器是什么?

14

我刚在我的Windows XP电脑上安装了Cygwin,对Unix非常陌生,正在学习中...

  1. 我怎么知道Cygwin安装在我的系统上的是哪个编辑器?vi、vim、nano、ted、jow等所有编辑器都无法使用...尝试使用“记事本”,但它将文件保存为.txt格式....

  2. 我还有一个困惑,即使没有添加shebang行和.sh扩展名创建的文件,当我被授权执行时,我也能够运行它们...如果我没有在脚本中添加shebang行,该如何运行脚本?

4个回答

22

我在Cygwin中遇到了这个问题和其他一些问题。Vim、Emacs(以及许多其他标准的Unix程序)都不会被默认安装在Cygwin中。

你需要再次运行设置程序(无需先卸载),并明确添加你想要的内容。

我写了一篇关于此的博客文章:http://wilsonericn.wordpress.com/2011/08/15/cygwin-setup-gotchas/


2
嘿,谢谢。现在我通过运行设置再次安装了vim编辑器。我也安装了'mintty',但我还是喜欢标准的cygwin窗口。感谢你的回复。 - ratsy

5

如果您的$SHELL能够解释脚本,则不需要使用shebang行。例如,如果您编写一个bash脚本并通过bash调用它,则不需要shebang行。

要了解安装了哪些编辑器,请再次运行cygwin setup.exe文件并浏览包列表(在编辑器组下),您还可以选择安装其他编辑器。


哦,好的,谢谢……那么我的脚本也不需要添加.sh扩展名了吗?a.) 我创建并授予执行权限的任何文件都将被执行,即使它没有shebang和.sh扩展名吗?此外,如果我使用“notepad”命令打开编辑器并在其中编写我的脚本,如果我保存它,它将保存为.txt文件,这意味着我应该能够运行此文件,因为脚本也是文本文件,那么为什么我无法执行它? - ratsy
这是正确的(适用于您的Shell脚本)。 - jman
2
如果您在记事本中创建文件,则会将其保存为Windows格式的文本文件,并带有CR-LF(\r\n)行尾。Cygwin的默认配置使用Unix格式的文本文件,带有LF(\n)行尾。我刚刚尝试使用记事本创建脚本bar.sh(为了避免.txt扩展名,请将“另存为类型:”更改为“所有文件(*.*)”);当我尝试运行它时,我得到了“./bar.sh: line 2: $'\r': command not found”的错误。虽然有解决方法,但如果您要使用Cygwin,最好学习使用它提供的编辑器之一。 - Keith Thompson
嘿,感谢你解释得很清楚。所以如果是这种情况,就是换行符的问题。我又用记事本写了一个没有shebang行的脚本,只是为了确认一下是否只是换行符的问题。我写了一个只有一行代码"echo hello world"的脚本,也没有shebang,这样只有一行的话就不会有换行符的问题了。而且由于我正在使用只有bash shell的cygwin,脚本肯定会被执行。是的,它成功地执行了。我很高兴问题只是换行符的问题。但是为了再次确认,我又写了一个没有shebang行的脚本,有两行代码,令人惊讶的是,这个脚本也被执行了。 - ratsy
请告诉我是否应该在这里编写所有三个脚本的代码...请注意,我在winXP上使用cygwin,并在cygwin中使用“notepad”命令,因此将那个notepad文件保存在我的电脑-> C:-> home-> user中,因为那是保存那些notepad脚本的唯一方法。 - ratsy
显示剩余3条评论

2

如果您有其他脚本,您应该能够以这种方式启动大多数没有sheband行的脚本:

bash script.sh
tcsh script.csh
python script.py
perl script.pl

顺便说一下,如果你是Unix新手,我建议你适应一个高级文本编辑器。我不想恶意攻击,但使用XEmacs或Vim会对你有很大帮助(语法高亮、片段使用等等)。我已经使用Vim好几年了,可能再也无法回到基本的编辑器了...


谢谢您的回答!是的,我现在已经安装了vim作为编辑器,而且确实不难,但有些不确定因素,比如光标有时会移动到脚本的第一个字符,最重要的是我还不能理解为什么,哈哈,正在逐渐习惯它。 - ratsy
1
你的动作问题是什么?我没明白重点在哪里。最好的方法是熟悉使用 h、j、k、l 和 w、e、b(E 和 B 也很有趣)进行动作。只需打开一个非空文件并尝试一下即可。 - Plouff
嘿,谢谢,是的,我正在适应中...不难,只需要练习,还有一个关于Cygwin的问题:我们是否可以在Cygwin控制台窗口中看到我们上面输入的内容,因为当我输入很多东西然后向上滚动时,我无法回到开始的位置,我的意思是滚动在某个点后停止了,所以我们是否可以看到从哪里开始输入,自登录以来?我在Google上搜索并看到我们需要在.Xdefaults文件中进行更改,那么这个文件在哪里?此外,我尝试从属性选项卡中增加Cygwin控制台窗口的缓冲区大小。 - ratsy

1
如果你的硬盘空间足够,我建议让Cygwin安装程序自行部署所有内容......我偶尔会瞥一眼,同时观看F1比赛。我使用的是750GB混合闪存/旋转硬盘,所以存储不是问题。这很像旧版Red Hat中DVD9格式的“万能选项”。
如果Cygwin安装程序默认只安装50/2100个软件包,或者有一个向导提供一些实用的预置选择(最小、服务器、GUI、全部),那将会很有帮助。

这将安装许多您永远不会使用的软件包。除了占用磁盘空间外,它还会在命令行完成中引入您不需要的命令,使得输入您需要的命令更加困难。此外,更新Cygwin需要很长时间。 - Gene Pavlovsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接