AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 716863
Accepted
paradroid
paradroid
Asked: 2022-09-11 17:26:55 +0800 CST2022-09-11 17:26:55 +0800 CST 2022-09-11 17:26:55 +0800 CST

特定的 bash 完成文件在 /usr/share/bash-completion/completions 中不起作用,但在 /etc/bash_completion.d 中工作正常

  • 772

我有一个 git 存储库,在其中保存了一些静态链接的二进制文件以及相关的 man 文件和 bash 完成文件,这些文件都是使用GNU Stow进行“安装”来制作符号链接的。

我之前已经将 bash 完成文件的符号链接放入/etc/bash_completion.d没有问题,但最近我开始将它们放入/usr/share/bash-completion/completions,因为我认为这对它们来说是一个更正确的位置,因为二进制文件正在进入/usr/local/bin并且 man 文件在/usr/local/share/man.

除了四个特定的 bash 完成文件之外,一切都像以前一样工作,这些文件在放置在这个新位置时不再工作。这些是:

  • git-identity.bash-完成
  • tmux.completion.bash

这两个用于 fzf:

  • 完成.bash
  • 键绑定.bash

我还有 20 个其他 bash 完成文件可以正常工作。这些特定的 bash 完成文件是什么让它们在/etc/bash_completion.d没有问题但没有问题的情况下工作/usr/share/bash-completion/completions?

编辑: 它们也不起作用~/.local/share/bash-completion/completions。


附加信息:

这些文件来自标准的 Debian/Ubuntu.bashrc行:

# Enable programmable completion features
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

在这两个位置中,不是目录上的内容被获取,而是这两个文件:

/usr/share/bash-completion/bash_completion

/etc/bash_completion

如果 NOT ,第二个文件只是指向第一个文件shopt -oq posix。在我的设置中:

$ if ! shopt -oq posix; then echo "not posix"; fi
not posix

我认为答案必须在/usr/share/bash-completion/bash_completion中。


更多的:

我尝试用bash_completion最新版本替换,但这也不起作用。

https://github.com/scop/bash-completion

还..

这些文件在放入其中任何一个时都不起作用~/.local/share/bash-completion/completions。

bash autocomplete
  • 1 1 个回答
  • 86 Views

1 个回答

  • Voted
  1. Best Answer
    Josh Brobst
    2022-09-19T07:55:17+08:002022-09-19T07:55:17+08:00

    为了向后兼容,其中的完成文件/etc/bash_completion.d总是立即来源。另一方面,目录懒惰地在其中获取脚本,也就是说,在该命令请求完成之前,不会获取特定的完成文件bash_completion。completions源文件由其名称确定,因此它必须与您尝试为其完成的命令具有相同的名称。因此,例如,tmux.completion.bash应该符号链接为completions/tmux而不是completions/tmux.completion.bash。

    最后,当您将其他所有内容放在 下/usr/local时,请注意您也可以将完成脚本放在那里:/usr/local/share/bash-completion/completions.

    • 2

相关问题

  • 通过命令的标准输出以编程方式导出环境变量[重复]

  • 从文本文件传递变量的奇怪问题

  • 虽然行读取保持转义空间?

  • `tee` 和 `bash` 进程替换顺序

  • 运行一个非常慢的脚本直到它成功

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve