【问题标题】:Bash alias autocomplete (with tab key) inserts a \ character while auto completingBash 别名自动完成(使用 Tab 键)在自动完成时插入 \ 字符
【发布时间】:2022-01-04 19:36:06
【问题描述】:

操作系统:Debian 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64 GNU/Linux 硬件:1 核、2GB RAM、VPS(云服务器)

例子:

alias defined
@syslog='sudo less +F /var/log/syslog'

如果我手动输入完整的别名,即@syslog - 那么它执行得很好。

但是,如果我只输入几个字符,例如 @sys 或 @sysl 或 @syslo,然后按 键自动完成,则命令会自动完成,看起来像 @syslog

此命令不会执行,因为它现在自动嵌入了 '' 字符。

同样的问题也发生在另一个别名上

!syslog='sudo less +F /var/log/syslog'    //This is auto completed as \!syslog

但是,如果我不在别名中使用任何特殊字符 例如

mylog='sudo less +F /var/log/syslog'

然后自动完成工作绝对没问题


此行为仅在此特定 VPS 上可见。 我有另一个具有相同设置和操作系统的 VPS(托管在不同的提供商上),并且至少有十几个定义为 @xxxxx 的别名可以正常工作。

有什么想法吗?

【问题讨论】:

  • 您是否尝试从COMP_WORDBREAKS 中删除@
  • bash 不允许在 "=" 周围有空格
  • @stark spaces 只是我的问题中的一个错字。实际文件 (.bash_aliases) 不包含空格。我会解决我的问题。
  • @Fravadona 我试过 echo $COMP_WORDBREAKS 并且它确实有 @ 你能详细说明一下吗?你能帮忙吗 - COMP_WORDBREAKS 是在哪里定义的?哪个文件等?如何删除 @ 符号?
  • 您是否考虑并尝试过使用函数来代替?

标签: linux bash autocomplete debian alias


【解决方案1】:

由于 bash-completion 软件包未安装在 debian 实例中,因此发生上述问题。

以上问题现在解决了

sudo apt install bash-completion

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2015-08-05
    • 2015-12-06
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多