在fish shell中输入$时提示"Unknown command: bind_dollar"错误的原因?
Fish Shell输入
$触发"Unknown command: bind_dollar"错误解决 问题描述
在MacOS Monterey 12.5.1系统上运行fish shell 3.5.1,多数命令可正常使用,但输入美元符号$时(无需按回车)就会弹出错误提示:
fish: Unknown command: bind_dollar
已尝试的操作:
- 通过Homebrew重新安装fish
- 确认fish在PATH中
- 删除fish.config文件
环境配置信息
错误详情
输入$后立即触发的错误:
fish: Unknown command: bind_dollar
Fish配置目录内容
~/.config/fish $ ls completions/ conf.d/ config.fish fish_variables functions/
PATH环境变量(/bin/sh下查看)
$ /bin/sh sh-3.2$ echo $PATH /usr/local/bin:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
fish程序位置
sh-3.2$ whereis fish fish: /usr/local/bin/fish
默认config.fish内容
sh-3.2$ cat config.fish if status is-interactive # Commands to run in interactive sessions can go here end
排查与解决步骤
- 检查conf.d目录的自动加载脚本
conf.d目录下的所有脚本会在fish启动时自动执行,可能存在错误的键绑定配置。执行命令查看所有文件内容:
cat ~/.config/fish/conf.d/*
如果发现包含bind '$' bind_dollar或类似绑定$到bind_dollar的代码,直接删除该行或对应的文件。
- 检查自定义函数目录
fish的自定义函数存放在functions目录,排查是否存在bind_dollar函数或绑定$键的函数:
ls ~/.config/fish/functions/ cat ~/.config/fish/functions/*.fish
找到相关文件后直接删除,重启fish测试。
- 检查fish_variables配置文件
该文件存储fish的变量和键绑定设置,可能存在错误配置。先备份文件:
cp ~/.config/fish/fish_variables ~/.config/fish/fish_variables.bak
打开文件搜索包含bind的行,找到涉及$的绑定条目并删除,保存后重启fish。
排查终端自定义绑定
部分终端(如iTerm2、Terminal.app)可能设置了全局键绑定,将$映射到了bind_dollar命令。打开终端偏好设置的「键盘」选项,检查是否存在相关绑定并移除。启动纯净fish会话测试
执行以下命令启动不加载任何用户配置的fish,验证问题是否来自配置:
fish --no-config
如果此时输入$正常,说明问题出在用户配置文件中;若仍报错,尝试卸载Homebrew版本的fish,改用官方源码编译安装或MacPorts重新安装。
内容的提问来源于stack exchange,提问作者shackleton
相关产品推荐
相关产品推荐

