`source ~/.bash_aliases`가 구문 오류와 함께 종료되는 이유는 무엇입니까?

`source ~/.bash_aliases`가 구문 오류와 함께 종료되는 이유는 무엇입니까?

이 파일의 구문 오류는 무엇입니까? 나는 말할 수 없다.

set-k8s-azure() { 
  export KUBECONFIG=~/.kube/config.azure-1 
}

set-k8s-minikube() { export KUBECONFIG=~/.kube/config.minikube }

minikube() {
  if [[ $@ == start* ]]; then
    set-k8s-minikube
  fi
  command minikube "$@"
}

alias pulr='if output=$(git status --porcelain) && [ -z "$output" ]; then git pull --rebase; else git stash save "pulr WIP saved" && git pull --rebase && git stash pop; fi'
alias vi=nvim

source ~/.bash_aliases생산하다:

bash: /home/niel/.bash_aliases: line 1: syntax error near unexpected token `('
bash: /home/niel/.bash_aliases: line 1: `set-k8s-azure() { '

답변1

구문 오류가 여기에 있다고 생각합니다.

set-k8s-minikube() { export KUBECONFIG=~/.kube/config.minikube }

이 구성에는 마지막 줄 앞에 {...}개행이나 a가 필요합니다 .;}

set-k8s-minikube() { export KUBECONFIG=~/.kube/config.minikube; }

또한 스크립트에서 사용하는 것 $HOME보다 사용하는 것이 좋습니다 . 부분적으로는 문서로 사용되기 때문이고 부분적으로 는 그렇지 않은 변수처럼 동작하기 때문입니다(참조~$HOME~큰따옴표 안에서 물결표(~)가 확장되지 않는 이유는 무엇입니까?).

답변2

함수 이름에는 대시를 사용할 수 없습니다. (자세한 내용은 다음을 참조하세요. 함수, 별칭 및 실행 파일에 하이픈에 문제가 있습니까?) Bash는 일반적으로 일부 유효하지 않은 문자를 허용하지만 어떤 경우에는 그렇지 않습니다. 이유는 모르겠습니다.전에 이걸 봤어. 따라서 대시를 밑줄로 바꾸고(그리고 Kusalananda가 말한 것처럼 세미콜론을 추가하면) 괜찮을 것입니다.

set_k8s_azure() { 
  export KUBECONFIG=~/.kube/config.azure-1 
}

set_k8s_minikube() { export KUBECONFIG=~/.kube/config.minikube; }

관련 정보