함수가 터미널에서 실행되지만 .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대체하십시오.

관련 정보