bash中alias不生效

alias不生效 在修改一段shell脚本时,需要将函数里面的kubectl命令替换为kubectl --insecure-skip-tls-verify=True,使得脚本中的所有kubectl命令执行时会自动加上选项--insecure-skip-tls-verify=True。首先想到的就是利用alias别名,示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function func1(){ ... kubectl get deployment -n ${NAMESPACE} ${CI_PROJECT_NAME} # 不生效 ... } ... function main(){ ... alias kubectl="kubectl --insecure-skip-tls-verify=True" kubectl get ns # 不生效 ... } 但是用上面方式改来改去kubectl选项不生效。 原因是:alias不能直接在同一个命令解析单元里面定义并使用,必须在定义alias的命令解析单元解析执行完成后,才能生效。 因此,在函数里面使用alias时,可以用下面函数的方式: 1 2 3 4 function main(){ kubectl() { /usr/bin/kubectl --insecure-skip-tls-verify=True "$@"; } kubectl get ns # 此处等同于kubectl加了--insecure-skip-tls-verify=True选项 } 当然也可以把alias放在函数外、脚本的前面。 ...

June 12, 2020 · 1 min · 117 words · erpan