此文件中的语法错误是什么?我看不出来。
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() { '
我相信语法错误在这里:
该构造在 final 之前
{...}
需要换行符或 a :;
}
另外,我建议您使用
$HOME
而不是~
在脚本中使用,部分原因是它用作文档,部分原因是$HOME
其行为类似于变量,而~
并非如此(请参阅为什么波浪号 (~) 在双引号内扩展?)。破折号在函数名称中无效。(有关更多详细信息,请参阅 函数、别名和可执行文件中的连字符是否存在问题?)Bash 通常可以容忍某些无效字符,但在某些情况下不是,我不知道为什么,尽管我以前见过这个. 所以用下划线替换破折号(并像 Kusalananda 所说的那样添加一个分号)就可以了: