Измените контекст gcloud, вход az, контекст Kubernetes, установите переменные среды и многое другое, просто изменив каталог.

В течение обычного рабочего дня мне часто приходится переключаться между двумя или даже тремя разными репозиториями, каждый со своим относительным gcloud или az или любой другой конфигурацией, контекстом Kubernetes и так далее.

Поначалу мне было очень неприятно и отнимало много времени на обратный поиск в истории команд, которые мне нужно было выполнить, чтобы иметь возможность выполнять свои задачи.

Разочарованный, я решил, что мне нужно найти способ автоматизировать эту скучную задачу, и придумал простое решение, которое не только экономит мне много времени, когда мне нужно переключить контекст, но и помогает мне отслеживать шаги, необходимые для достижения определенной конфигурации, на случай, если мне понадобится повторить ее в другом проекте.

После некоторого переполнения стека я создал эти очень простые функции zsh (переносимые в bash практически без усилий) для загрузки скрытых скриптов при смене каталога. В частности, две функции называются cda (что означает cd и активировать или что-то еще) и sayonara (что означает до свидания на японском языке):

# sourcing hidden files on cd
function cda() {
        local -a PATHS; PATHS=('.', '.vscode' '.idea')
        builtin cd "$@" || return

        for p ("$PATHS[@]"); do
                local hidden="${p}/.hidden.env"
                if [[ -f "$hidden" ]]
                then
                        source $p
                fi
        done
}

# cleaning up when leaving, sourcing actions to do (like deactivate venv)
function sayonara() {
        local -a PATHS; PATHS=('.', '.vscode' '.idea')

        for p ("$PATHS[@]"); do
                local hidden="${p}/.hidden.out.env"
                if [[ -f "$hidden"]]
                then
                        source $p
                fi
        done

        if [[ "$#" -gt 0 ]] && local dest=("$@") || local dest=".."

        builtin cd $dest || return
}
alias sayo="sayonara"

Для краткости команде sayonara также присвоен псевдоним sayo.

Почему бы просто не переопределить компакт-диск?

Я мог назвать функцию cda cd и полностью получить скрытые файлы...