我正在寻找一种方法来从我的 shell 脚本中检查脚本特定的完成是否已由用户使用 complete -F ...
我希望此检查打印出有关如何初始化完成的建议,例如:
警告:自动完成未初始化。请运行:source ....;完成 -F ...
问题是在子 shell 中运行的脚本没有关于用户工作的父 shell 的“完整”环境的信息。
所以 complete -p| grep my-script-name
从不返回任何结果。
用户应该运行“source”和“complete”命令或手动将它们添加到他的 .bashrc 中,因为我们在无法访问 bash 完成系统目录的服务器上工作。
或者,如果您知道从脚本中初始化(而不仅仅是检查)自动完成的方法,我会很乐意接受它。
最佳答案
您的脚本可以访问父 shell 的此类信息的唯一方法是包含它而不是作为子 shell 执行。与其指示您的用户他们可以包含一些配置,您可以设计您的脚本,使其在运行或包含时都能正常工作。
然后您可以简单地通知您的用户,如果他们想要启用完成,他们需要包含您的脚本而不是将其作为可执行脚本运行(根据您的意愿使用 source 或 . 的说明)。
但是,在这种情况下,我倾向于在文档中添加此信息或将其添加到始终显示的横幅中(但可以使用 -q 等选项开关禁用),而不是支持两种模式运行脚本(因为增益很小)。
关于linux - 从 bash 脚本中检查自动完成是否已初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290833/