【Windows】【10】【WSL】fish shell のインストール【SW】

build-essential のインストール後の動作確認も兼ねて friendly shell (別名 finally shell )のインストールを行う。

手順

1. fish shell 最新版のインストール

fish shell の README に従い以下を進める。
使用する fish shell のバージョンは最新の 2.7.1 である。

% cd /tmp
% wget https://github.com/fish-shell/fish-shell/archive/2.7.1.zip
% unzip 2.7.1
% cd fish-shell-2.7.1
% autoreconf --no-recursive

やはり不足しているパッケージがあった。

% ./configure
checking if autoreconf needs to be run... no
checking if autoheader needs to be run... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for gcc option to accept ISO C99... none needed
checking for gcc option to accept ISO Standard C... (cached) none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking for grep that handles long lines and -e... /bin/grep
checking for fgrep... /bin/grep -F
checking for a sed that does not truncate output... /bin/sed
checking how to run the C++ preprocessor... g++ -E
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether g++ supports C++11 features by default... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for msgfmt... no
checking for doxygen... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for -rdynamic linker flag... yes
checking for /proc/self/stat... yes
checking for library containing nanosleep... none required
checking for library containing shm_open... -lrt
checking for library containing pthread_create... -lpthread
checking for library containing setupterm... no
configure: error: Could not find a curses implementation, needed to build fish. If this is Linux, try running 'sudo apt-get install libncurses5-dev' or 'sudo yum install ncurses-devel'

 
エラーメッセージに従い以下を実行する。(Ubuntu なので apt を行う)

% sudo apt-get install libncurses5-dev

 
再度、configure から再開する。

% ./configure
% make
% sudo make install

 
無事にインストールすることができた。

% which fish
/usr/local/bin/fish

 

2. パッケージ管理ソフト fisherman のインストール

詳細はこちら

% curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher

 

3. fzf のインストール

% cd $HOME/.config/
% git clone https://github.com/junegunn/fzf.git
% cd fzf
% file ./install
./install: Bourne-Again shell script, ASCII text executable
% /bin/bash ./install
(最後に設定を問われるので「y」と入力する)

 

おまけ. fishingz のインストール

全ファイルシステムアクセッサ fishingz の挙動
fish shell に変える。

% fish

fisherman を使って fishingz をインストールする。

> fisher install nekochango/fishingz
Installing 1 plugin/s
OK Fetch fishingz github.com/nekochango/fishingz
Done in 25s 613ms

(必須ではないが) 設定ファイルを展開する

> mkdir ~/.fishingz/
> cp ~/.config/fisherman/fishingz/init.fish  ~/.fishingz/.

 
$HOME/.config/fish/functions/fish_user_key_bindings.fish に下記 + の部分を追加する。

  function fish_user_key_bindings  
+    ### fishingz ###  
+   bind \cu\cu 'fishingz             ; commandline -f repaint'
+   bind \cu\ci 'fishingz --find-dir  ; commandline -f repaint'
+   bind \cu\cf 'fishingz --find-file ; commandline -f repaint'
+   bind \cu\cl 'fishingz --find-link ; commandline -f repaint'
+   bind \cu\cm 'fishingz --find-mru  ; commandline -f repaint'

    fzf_key_bindings

キーバインディングの設定を反映させる

> source $HOME/.config/fish/functions/fish_user_key_bindings.fish

 
パス情報を格納したデータベースを構築する。

> fishingz -i
Searching directories ... [3448]
Searching files ....  [33285]
Searching symbolic links ....  [5925]

ディレクトリ 3448個、ファイル 33285個、シンボリックリンク 5925個がデータベースに追加された。
 
Ctrl-u Ctrl-f を実行すると fzf の絞り込みまでは進んだが、アクション(cd, vim などなど)が正しく動作しない。