man命令持续返回退出状态码127 无法打开任意工具手册页如何处理
问题现象
执行任意man查询命令,比如man man都会触发如下报错,命令退出状态码为127:
sh: line 1: bat: command not found
man: command exited with status 127: sed -e '/^[[:space:]]$/{ N; /^[[:space:]]\n[[:space:]]*$/D; }' | LESS=-ix8RmPm Manual page man(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB%.. (press h for help or q to quit)$PM Manual page man(1) ?ltline %lt?L/%L.:byte %bB?s/%s..?e (END):?pB %pB%.. (press h for help or q to quit)$ MAN_PN=man(1) sh -c col -bx | bat -l man -p
根因说明
man的默认分页工具被修改为bat(一款带语法高亮的cat增强工具),但当前系统未安装该工具,导致man执行分页渲染流程时调用失败。
解决方案
方案1:安装bat工具保留高亮渲染效果
不同发行版安装命令如下:
- Debian/Ubuntu 系:
apt install bat - RHEL/CentOS/Fedora 系:
dnf install bat - Arch 系:
pacman -S bat - macOS(Homebrew):
brew install bat
安装完成后再次执行man命令即可正常带语法高亮展示手册页。
方案2:恢复man默认分页器,不使用bat
如果不需要bat的高亮效果,直接修改man的分页配置即可,执行如下命令临时生效:export MANPAGER=less
如果需要永久生效,将上面的导出命令写入你当前使用的shell配置文件(如/.bashrc、/.zshrc等),执行source命令加载后即可永久生效。
内容的提问来源于stack exchange,提问作者TeraByte

