我在 OSX 上使用 homebrew 的 bash 完成包,它安装在 /usr/local/etc/bash_completion 中。它工作正常,但它的许多扩展依赖于以 COMP_ 开头的各种环境变量,例如 COMP_LINE。不幸的是,这些环境变量没有被导出到我的 bash 环境中,尽管我获取了正确的文件。这是我的 .bash_profile 中的适用区域:
# bash completion
if [ -f `brew --prefix`/etc/bash_completion ]; then
. `brew --prefix`/etc/bash_completion
. /usr/local/etc/bash_completion.d/git-completion.bash
fi
但是 COMP_LINE 尚未设置,这导致其他完成插件无法工作:
> env | grep COMP_LINE
>
知道为什么环境变量没有设置吗?提前感谢您的时间。
答案1
$COMP_LINE
不是环境变量。它是一个内部变量,并且仅对完成函数可见,对其他 shell 使用不可见。(大多数其他内部变量在 中可见declare
。)