4

Есть ли в моем ~/.zshrc переменная команды или среды, в которой я могу проверить разницу между тем, когда я запускаю source ~/.zshrc для обновления конфигурации, и когда оболочка читает ~/.zshrc при инициализации?

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

# somewhere in ~/.zshrc

if [[ -n $CONSOLE_ALREADY_RUNNING ]]; then
    echo "we've alredy loaded ~/.zshrc"
    echo "so you must be sourcing it"
fi

# many more lines of ~/.zshrc commands

# last line of ~/.zshrc
export CONSOLE_ALREADY_RUNNING=1

Похоже, должен быть какой-то более понятный способ проверить, просто ли я перезагружаюсь через source /.zshrc или если .zshrc выполняется для нового экземпляра zsh который был только что загружен в память.

1 ответ1

4

$ZSH_EVAL_CONTEXT - "toplevel" если вы вызываете скрипт из оболочки. (например ./script)$ZSH_EVAL_CONTEXT - это "toplevel:file" если вы используете сценарий. (например, source script)$ZSH_EVAL_CONTEXT - это "file" если он запускается автоматически как конфигурация времени выполнения. (вроде бы ~/.zshrc .)

Нашел переменную здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .