该文件中的语法错误是什么?我看不出来。
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; }