関数は端末で実行されますが、.shスクリプトでは機能しません。

関数は端末で実行されますが、.shスクリプトでは機能しません。

私は基本的な.shファイルのいくつかのコマンドを完了するためにBashコマンドを使ってこれをやろうとしています。しかし、この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適用するには、新しい端末を実行または開くことで. ~/.bashrc実行source ~/.bashrcする必要があります。

bash XXX.shこの完了コードを含む.shスクリプトを使用または実行すると機能しません./XXX.sh。使用. ./XXX.shまたはsource ./XXX.sh交換してください。

おすすめ記事