如何在cygwin中使用鱼壳?

mur*_*loq 17 cygwin fish

是否可以将鱼壳与 cygwin 一起使用?我无法在 cygwin 中编译源代码,也没有找到任何预编译包。在 cygwin 中没有鱼有充分的理由吗?

mur*_*loq 23

现在 Cygwin 正式支持 fish shell 2.1.0,可以使用默认安装程序安装它。


Sha*_*hin 15

这是我如何在 Cygwin 中编译

第 1 步:检查是否安装了所有依赖项

首先,确保我们有以下 cygwin 包:

  • libncurses-devel
  • libiconv
  • autoconf (不是一个真正的鱼的依赖,但我们在后面的步骤中需要它)

第 2 步:下载并解压最新源

接下来,从http://fishshell.com下载最新的源代码(我使用的是fish-1.23.1.tar.gz)。将源文件解压缩到您选择的目录并 cd 到它:

$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
Run Code Online (Sandbox Code Playgroud)

第 3 步:编辑configure.ac以删除检查iconv

现在由于某种原因,./configure无法正常检测libiconv。为了解决这个问题,我们取消了对它的检查(稍后我们将手动指定 lib)。为此,我们编辑configure.ac并删除了iconv_open. 搜索iconv_open显示 3 次出现;我们将它们全部注释掉。所以,从:

AC_SEARCH_LIBS( iconv_open, iconv, ....)
Run Code Online (Sandbox Code Playgroud)

我们改为:

#AC_SEARCH_LIBS( iconv_open, iconv, ....)
Run Code Online (Sandbox Code Playgroud)

第 4 步:重建并运行 ./configure

接下来,我们./configure通过运行重新构建脚本,autoconf然后运行配置脚本:

$ autoconf && ./configure
Run Code Online (Sandbox Code Playgroud)

第 5 步:编辑Makefile以包含正确的路径curses.h

我面临的另一个问题是curses.h——gcc 找不到它。快速搜索显示它在/usr/include/ncurses.

在 中Makefile有一个硬编码的包含路径CFLAGS,但它指向/usr/local/include/ncurses

因此,我们编辑Makefile和更改:

CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
Run Code Online (Sandbox Code Playgroud)

CFLAGS = -I/usr/include/ncurses -std=c99 ...
Run Code Online (Sandbox Code Playgroud)

第 6 步:导出LDFLAGS到链接中libiconv,我们就可以编译/安装了。

最后,我们导出必要LDFLAGS的链接进去iconv,然后编译安装!

$ export LDFLAGS="-liconv"
$ make && make install
Run Code Online (Sandbox Code Playgroud)

享受 fish

$ fish
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
me@home /u/l/s/fish-1.23.1> 
Run Code Online (Sandbox Code Playgroud)