Czy jest w mojej komendzie zmienna polecenia lub zmiennej środowiskowej, którą można ~/.zshrc
by rozróżnić, kiedy uruchamiam się, source ~/.zshrc
aby zaktualizować moją konfigurację, i kiedy powłoka czyta, ~/.zshrc
gdy jest inicjowana?
Jak dotąd moim rozwiązaniem jest ustawienie zmiennej na końcu ~/.zshrc
i przetestowanie tej zmiennej przy kolejnej analizie, ale jestem ciekawy, czy istnieje lepszy sposób na bezpośrednie uzyskanie tych informacji z systemu lub środowiska zamiast hakowania ich razem w sposób, który wydaje się taki delikatny ...
# 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
Wygląda na to, że powinien istnieć bardziej przejrzysty sposób na sprawdzenie, czy po prostu ładuję ponownie, source /.zshrc
czy też .zshrc
jest wykonywana, ponieważ nowa instancja zsh
została właśnie załadowana do pamięci.
Odpowiedzi:
$ZSH_EVAL_CONTEXT
jest,"toplevel"
jeśli wywołasz skrypt ze powłoki. (na przykład./script
)$ZSH_EVAL_CONTEXT
dzieje się,"toplevel:file"
jeśli skrypt zostanie pobrany. (na przykładsource script
)$ZSH_EVAL_CONTEXT
jest,"file"
jeśli jest uruchamiany automatycznie jako konfiguracja środowiska wykonawczego. (jak~/.zshrc
by to było.)Znaleziono zmienną tutaj .
źródło