tl;dr
FROM amazon/aws-cli:latest as build RUN yum update -y \ && yum install -y make gcc tar gzip # bash 5.2 for zoxide <Space>+<Tab> ENV VER_bash=5.2 RUN yum install -y ncurses-devel RUN curl -O http://ftp.gnu.org/gnu/bash/bash-${VER_bash}.tar.gz \ && tar xf bash-${VER_bash}.tar.gz \ && cd bash-${VER_bash} \ && ./configure --with-curses \ && make \ && make install \ && rm -rf bash-${VER_bash}.tar.gz bash-${VER_bash} FROM amazon/aws-cli:latest COPY --from=build /usr/local/bin/bash /usr/local/bin/bash ENTRYPOINT /usr/local/bin/bash
背景など
autojumpやzのような、ディレクトリ移動履歴をもとによしなに移動できるzoxideを使おうと設定していた。
<space>+<tab>
というショートカットキーは bash4.4以降が必要ということがわかり、最新のbashでも入れてみるかとビルドレイヤーでビルドしてバイナリだけ持ってきてパスに置くことにした。
あと、configureスクリプトに--with-curses
オプションをつけているのは、長いコマンドを入力すると横スクロールされて先頭が消えるのを対処するため。
これは readline のhorizontal-scrollをoffにすれば解決する(~/.inputrc
に set horizontal-scroll off
を書く)はずだったが、 cursesを入れてないと上下方向のカーソル移動に対応できずfall backとして横スクロールが強制されていたもよう。
bashを5に上げた影響かと思ってなかなか探すのに苦労したが、最終的にこのスレッドを見て解決した。
ついでに、 readlineのドキュメントを見たら 補完時に大文字小文字を無視してくれるオプションを見つけたのが収穫。zshにしないといけないと思い込んでました
set completion-ignore-case on