从bash脚本中检查自动完成是否已初始化

时间:2012-07-02 09:14:57

标签: linux bash shell autocomplete sh

我正在寻找一种方法,在我的shell脚本中检查用户使用complete -F ...

初始化了脚本特定的完成情况

我希望此检查打印出有关如何初始化完成的建议,如:

Warning: Auto completion is not initialized. Please run : source ....; complete -F ...

问题是,在子shell中运行的脚本没有关于"完成"的信息。用户正在工作的父shell的环境。

所以complete -p| grep my-script-name永远不会返回任何结果。

用户应该运行" source"和#34;完成"命令或手动将它们添加到他的.bashrc中,因为我们正在我们无法访问bash完成系统目录的服务器上工作。

或者,如果你知道一种从脚本中初始化(而不仅仅是检查)自动完成的方法,我很乐意接受它。

2 个答案:

答案 0 :(得分:0)

要么你希望每个用户都使用bash完成(我认为不好,例如我更喜欢关闭它),或者让用户自己决定,但是在每个TABTAB打印出这条消息是威胁,你不觉得吗?

我将/etc/bash.bashrc放入您认为每个用户应该运行的内容中。

答案 1 :(得分:0)

您的脚本可以访问父shell的唯一方法是,如果包含它而不是作为子shell执行。您可以设计脚本,使其无论是运行还是包含在内,都可以设计您的脚本,而不是指导您的用户。

然后您可以简单地通知您的用户,如果他们想要完成启用,他们需要包含您的脚本而不是将其作为可执行脚本运行(使用instuctions来使用source或。如您所愿)。

但是,在这种情况下,我倾向于在文档中添加此信息或将其添加到始终显示的横幅中(但可以使用-q选项开关禁用),而不是支持两种模式运行脚本(因为增益很小)。