Hacking Limbo

Reading / Coding / Hacking

如何让 Mac 的 Ruby 使用 libreadline

一开始我以为是终端的问题,irb 里很多常用的 bash 按键绑定都失效了,比如查找输入历史的 C + r,后来才发现这是因为 Ruby 在 Mac 里面编译时默认使用了 libedit 而不是 libreadline (天知道为什么)。

Google 了一下,找到一个解法。步骤如下:

  1. 安装 6.0 版本的 readline 库:brew install readline

  2. 配置 Ruby 的 readline 扩展:

    # 请根据自己的 Ruby 版本调整目录名
    cd ~/.rvm/src/ruby-1.9.3-p194/ext/readline
    
    # 请根据 Homebrew 和 readline 库的安装目录调整路径
    ruby extconf.rb --with-readline-dir=/usr/local/Cellar/readline/6.0
  3. 确认第二步的命令输出里有 checking for readline/readline.h... yes 这一行,然后运行 make

  4. 运行 otool -l readline.bundle,确认输出的内容包含了 libreadline 而不是 libedit,然后运行 make install

搞定。来源:Getting ruby to use readline instead of libedit