我使用module
命令将内容加载和卸载到我的环境中,我使用的某些机器具有适当的自动完成功能,而其他机器则没有。
我想知道是否有可能知道完成的来源并安装在其他地方。
jor*_*anm 10
您可以使用complete
内置命令显示命令的完成代码。下面是一个例子:
$ complete -p ls
complete -F _longopt ls
Run Code Online (Sandbox Code Playgroud)
如果您对它的作用感兴趣_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 ------
Run Code Online (Sandbox Code Playgroud)
如果是函数,您可以在此处使用 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
Run Code Online (Sandbox Code Playgroud)
Bash 无法确定在初始化过程中定义环境变量或函数的位置。
否则,您可以使用 .bash 运行 bash -x
。
bash -x -i -l
Run Code Online (Sandbox Code Playgroud)
这将在调试模式下执行一个交互式登录 shell,它将显示执行的每一行。如果您在输出中找到函数定义,则可以找到它之前的最后一个source
或.
命令。