储存别名的更好方法?

时间:2019-08-09 18:58:01

标签: bash macos terminal alias

我在~/.bash_profile

中添加了别名列表

现在加载新的终端窗口所花费的时间约为10秒。

是否存在更好的方式或位置来存储别名以供日常使用?

以下是我使用的一些常见示例:

alias sshcol="kubectl exec -ti $(kubectl get pod --selector=app=collector --field-selector=status.phase=Running -n etl -o jsonpath={.items[0].metadata.name}) -n etl -c collector /bin/bash"

alias logscol="kubectl logs --tail=50 $(kubectl get pod --selector=app=collector --field-selector=status.phase=Running -n etl -o jsonpath={.items[0].metadata.name}) -n etl -c collector"

2 个答案:

答案 0 :(得分:2)

$(kubectl get pod-这是因为每次bash_profile来源都在$(...)中运行命令。您可以使用一个函数。

sshcol() {
    kubectl exec -ti "$(kubectl get pod --selector=app=collector --field-selector=status.phase=Running -n etl -o jsonpath="{.items[0].metadata.name}")" -n etl -c collector /bin/bash
}

答案 1 :(得分:1)

您似乎在重新运行kubectl get pod,超出了必要。例如,

# Run this once and save the result
pod=$(kubectl get pod --selector=app=collector --field-selector=status.phase=Running -n etl -o jsonpath={.items[0].metadata.name})

alias sshcol="kubectl exec -ti \"$pod\" -n etl -c collector /bin/bash"
alias logscol="kubectl logs --tail=50 \"$pod\" -n etl -c collector"

您可能希望使用函数代替别名。

但是,如果kubectl get pod是在定义时运行的错误,并且确实需要在使用别名时运行,则应该 definitiely 定义一个函数,如{ {3}}。