为什么bash不显示“bind -p”命令的结果?

当我用-c开关传递时,bash拒绝给我'bind -p'的输出:

bash -c 'bind -p' 

但它可以input

 bind -p 

直接在bash提示符下,它可以input类似的东西

 bash -c 'echo "hi"' 

和zsh高兴地做了什么bash拒绝做(嗯,等效命令在zsh中):

 zsh -c 'bindkey -L' 

究竟是怎么回事?

当您使用-c选项运行bash时, bash将以非交互模式运行。 显然,当bash处于非交互模式时, bind内build函数不会生成输出。 您可以通过给-i选项强制bash进入交互模式。 以下为我工作:

 bash -i -c 'bind -p' 

好吧,我刚刚在input我的问题后发现了部分答案。

如果我input

 bash -c "set -o emacs && bind -p" 

那么它会给出bind命令的输出。 看起来由于某种原因,bash没有默认的键盘映射,这真的很奇怪。

(我有我的.bash_profile的东西有一个错误 – 东西在zsh中运行正常,但哪个bash ch咽(显然bash不允许在脚本中使用'else'?) – 所以我只是禁用它,确定默认设置将是清洁无论如何。)

bash不默认vi或者emacs键盘图几乎是不可想象的。 还是还有别的东西在逃避我呢?