bash – 为什么“$”执行文件名完成?
发布时间:2020-12-15 22:59:04 所属栏目:安全 来源:网络整理
导读:在尝试配置可编程完成时,我遇到了一个我不理解的行为. 鉴于这三种完成方案,这是我理解它们的方式: $TABTAB 行的开头 – 使用完整-E – 如果它不存在,请使用完整的-D – 如果它不存在,请使用默认的Bash完成 – 线上没有字 – 使用命令完成. $comTABTAB 试图
在尝试配置可编程完成时,我遇到了一个我不理解的行为.
鉴于这三种完成方案,这是我理解它们的方式: $<TAB><TAB> 行的开头 – >使用完整-E – >如果它不存在,请使用完整的-D – >如果它不存在,请使用默认的Bash完成 – >线上没有字 – >使用命令完成. $com<TAB><TAB> 试图填写第一个单词 – >使用命令完成. $command argu<TAB><TAB> 线上至少有一个字 – >试图完成一个论点 – >对给定命令使用complete – >如果它不存在,请使用默认的Bash完成 – >线上至少有一个字,所以不要使用命令完成 – >不以$,?或@开头,所以执行文件名完成. 我的问题是为什么在这种情况下执行文件名完成而不是命令完成,即使该行上还没有单词: $<SPACE><TAB><TAB> 由于下面的命令完成按预期执行,因此更加令人困惑: $<SPACE>com<TAB><TAB> 我很可能误解了手册,我会非常感谢任何解释. 注意: 解决方法
当一行以Bash shell中的空白开头时,这告诉shell该命令不应该进入命令历史记录.这可以通过在.bashrc,.profile或任何你想要的文件中设置HISTCONTROL env变量来配置,并且应该是默认行为(另请参见
How to prevent commands to show up in bash history?).
因此,当行具有前导空白时,命令执行是相同的,除了该命令不进入历史记录.因此,代码完成也表现相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读