Manjaro 24.0下iex/erl低版本OTP无法识别箭头键求助
解决Manjaro 24.0下Erlang/OTP 26.1前版本iex/erl箭头键失效问题
可行解决方向
1. 用rlwrap增强shell功能
rlwrap可以为不支持readline的程序提供命令历史、光标移动等功能,是最快捷的临时解决方案:
- 安装rlwrap:
sudo pacman -S rlwrap - 启动iex/erl时加上rlwrap前缀:
rlwrap iex rlwrap erl - 可以把别名加到shell配置文件(比如
~/.bashrc或~/.zshrc)里,避免每次手动输入:alias iex='rlwrap iex' alias erl='rlwrap erl'
2. 重新编译带readline支持的旧版OTP
部分发行版打包的旧版OTP可能默认禁用了readline支持,手动编译时强制启用:
- 安装编译依赖:
sudo pacman -S base-devel readline ncurses - 下载对应版本的OTP源码(比如25.0.2),解压后进入目录:
./configure --enable-readline --prefix=/usr/local/otp25 make && sudo make install - 用
export PATH=/usr/local/otp25/bin:$PATH切换到编译版本,测试箭头键是否正常。
3. 远程服务器场景的适配
连接运行旧版OTP的远程服务器时,在本地用rlwrap包裹ssh命令,让本地处理终端输入:
rlwrap ssh your_user@remote_server
进入远程终端后再启动iex/erl,即可正常使用箭头键。
4. 兼容ncurses版本
Manjaro 24.0默认的ncurses版本较新,旧版OTP可能存在兼容性问题:
- 安装ncurses5兼容库:
sudo pacman -S ncurses5-compat-libs - 启动前设置环境变量指定旧版ncurses:
export LD_LIBRARY_PATH=/usr/lib/libncurses.so.5:$LD_LIBRARY_PATH iex
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

