mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-09-29 14:36:04 +02:00
perf(init): cache the LocalHostName lookup instead of inferring it
Deriving SHORT_HOST from a .local suffix assumed $HOST came from LocalHostName, but macOS lets HostName be set independently, so a HostName ending in .local would change SHORT_HOST and with it the zcompdump name and the ssh-agent and keychain cache identities. Ask scutil as before, but remember its answer against the $HOST it was looked up for, so the fork only happens when $HOST changes. An unreadable, empty or unwritable cache falls back to forking every time, which is today's behaviour. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b37d4878ed
commit
fe25122da0
+10
-6
@@ -100,13 +100,17 @@ done
|
|||||||
# Figure out the SHORT hostname
|
# Figure out the SHORT hostname
|
||||||
if [[ "$OSTYPE" = darwin* ]]; then
|
if [[ "$OSTYPE" = darwin* ]]; then
|
||||||
# macOS's $HOST changes with dhcp, etc. Use LocalHostName if possible.
|
# macOS's $HOST changes with dhcp, etc. Use LocalHostName if possible.
|
||||||
# When $HOST is the Bonjour name (<LocalHostName>.local) it already is the
|
# scutil costs a fork on every start, so remember its answer against the
|
||||||
# LocalHostName, so don't fork scutil to look it up.
|
# $HOST it was looked up for and only ask again when $HOST changes.
|
||||||
if [[ "$HOST" = *.local ]]; then
|
__omz_host_cache="$ZSH_CACHE_DIR/localhostname"
|
||||||
SHORT_HOST="${HOST%.local}"
|
if [[ -r "$__omz_host_cache" ]]; then
|
||||||
else
|
{ read -r __omz_host_key && read -r SHORT_HOST } < "$__omz_host_cache"
|
||||||
SHORT_HOST=$(scutil --get LocalHostName 2>/dev/null) || SHORT_HOST="${HOST/.*/}"
|
|
||||||
fi
|
fi
|
||||||
|
if [[ "$__omz_host_key" != "$HOST" || -z "$SHORT_HOST" ]]; then
|
||||||
|
SHORT_HOST=$(scutil --get LocalHostName 2>/dev/null) || SHORT_HOST="${HOST/.*/}"
|
||||||
|
[[ ! -w "$ZSH_CACHE_DIR" ]] || print -rl -- "$HOST" "$SHORT_HOST" >| "$__omz_host_cache"
|
||||||
|
fi
|
||||||
|
unset __omz_host_cache __omz_host_key
|
||||||
else
|
else
|
||||||
SHORT_HOST="${HOST/.*/}"
|
SHORT_HOST="${HOST/.*/}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user