我使用module
命令在我的环境中加载和卸载内容,我使用的一些机器具有正确的自动完成功能,而其他机器则没有。
我想知道是否有可能知道完成来自哪里并安装在其他地方。
答案1
您可以使用内置命令显示命令的完成代码complete
。这是一个例子:
$ complete -p ls
complete -F _longopt ls
如果您对它的作用感兴趣_longopt
,可以使用type
内置函数:
$ type -a _longopt
_longopt is a function
_longopt ()
{
local cur prev words cword split;
_init_completion -s || return;
case "${prev,,}" in
--help | --usage | --version)
----- snip ------
如果是函数,您可以使用 HairOfTheDog 指出的解决方案这里:
# Turn on extended shell debugging
shopt -s extdebug
# Dump the function's name, line number and fully qualified source file
declare -F _longopt
# Turn off extended shell debugging
shopt -u extdebug
Bash 无法确定初始化过程中环境变量或函数的定义位置。
否则,您可以获得正在运行 bash 的信息-x
。
bash -x -i -l
这将在调试模式下执行交互式登录 shell,它将显示执行的每一行。如果在输出中找到函数定义,则可以找到它之前的最后一个source
或命令。.