是否可以将 fish shell 与 cygwin 一起使用?我无法在 cygwin 中编译源代码,也没有找到任何预编译的软件包。cygwin 中没有 fish 有什么好理由吗?
答案1
fish shell 2.1.0 现在在 Cygwin 中得到官方支持,可以使用默认安装程序进行安装。
答案2
以下是我编译的方法鱼在 Cygwin 中。
步骤 1:检查所有依赖项是否已安装
首先,确保我们有以下 cygwin 包:
libncurses-devel
libiconv
autoconf
(实际上不是 fish 的依赖,但我们在后面的步骤中需要它)
第 2 步:下载并解压最新源
接下来,从下载最新源代码http://fishshell.com(我用了鱼-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/
步骤 3:编辑configure.ac
以删除iconv
现在由于某种原因,./configure
无法正确检测libiconv
。为了解决这个问题,我们删除了对它的检查(我们稍后会手动指定库)。为此,我们编辑configure.ac
并删除了对的检查iconv_open
。搜索iconv_open
显示 3 次出现;我们将它们全部注释掉。所以,从:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
我们改为:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
步骤 4:重建并运行./configure
接下来,我们./configure
通过运行autoconf
然后运行配置脚本来重建脚本:
$ autoconf && ./configure
步骤 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 ....
到
CFLAGS = -I/usr/include/ncurses -std=c99 ...
步骤 6:导出LDFLAGS
到链接libiconv
,我们就可以进行编译/安装了。
最后我们把需要的导出来LDFLAGS
链接进去iconv
,然后编译安装!
$ export LDFLAGS="-liconv"
$ make && make install
享受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>