当我使用 -c 开关传递“bind -p”时,bash 拒绝给我提供输出:
bash -c 'bind -p'
但它可以输入
bind -p
直接在 bash 提示符下输入类似
bash -c 'echo "hi"'
并且 zsh 愉快地完成了 bash 拒绝做的事情(好吧,zsh 中的等效命令):
zsh -c 'bindkey -L'
到底发生什么事了???
答案1
当您bash
使用该-c
选项运行时,bash
将以非交互模式运行。显然,bind
当 bash 处于非交互模式时,内置命令不会生成输出。您可以bash
通过提供该选项强制进入交互模式-i
。以下对我有用:
bash -i -c 'bind -p'
答案2
好的,我有一个部分的输入我的问题后才发现的答案......
如果我输入
bash -c "set -o emacs && bind -p"
然后它给出了 bind 命令的输出。似乎出于某种原因,bash 没有默认的键映射,这真的很奇怪。
(我的 .bash_profile 中的某些内容出现错误 - 在 zsh 中运行正常但 bash 出现问题(显然 bash 不允许在脚本中使用“else”!?) - 所以我禁用了它,认为默认设置无论如何都会更干净。)
几乎无法想象 bash 默认不采用 vi 或 emacs 键盘映射。还是有其他我没注意到的事情?