函数在终端中运行,但在 .sh 脚本中不起作用

函数在终端中运行,但在 .sh 脚本中不起作用

我正在尝试使用 Bash 命令来完成,只是为了完成一些用于我的主 .sh 文件的命令。但我在使用这个 Bash 代码时遇到了一些问题:

function _test()
{
  local cur
  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  COMPREPLY=($( compgen -W '--activate --help --new' -- $cur ) )
}
complete -F _test test

现在,当我将其放入终端并调用它时,代码可以正常工作,但如果我将其放入 .sh 脚本并运行它,则不会执行任何操作。我还尝试将此函数复制并粘贴到 bashrc 文件中(这也不起作用),因为我是 Bash 脚本新手,我不知道出了什么问题。感谢您的所有帮助!

答案1

只需将您的代码放入我的代码中即可.bashrc,它确实有效。

.bashrc您应该通过运行. ~/.bashrcsource ~/.bashrc仅打开一个新终端来执行它以使其生效。

bash XXX.sh如果您使用或运行包含该完成代码的 .sh 脚本,它将不起作用./XXX.sh。使用. ./XXX.shsource ./XXX.sh代替。

相关内容