fix: do not call chpwd hooks in subshells

parent 4e0f19cf
...@@ -37,7 +37,7 @@ function _omz { ...@@ -37,7 +37,7 @@ function _omz {
elif (( CURRENT == 3 )); then elif (( CURRENT == 3 )); then
case "$words[2]" in case "$words[2]" in
changelog) local -a refs changelog) local -a refs
refs=("${(@f)$(cd "$ZSH"; command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}") refs=("${(@f)$(builtin cd -q "$ZSH"; command git for-each-ref --format="%(refname:short):%(subject)" refs/heads refs/tags)}")
_describe 'command' refs ;; _describe 'command' refs ;;
plugin) subcmds=( plugin) subcmds=(
'disable:Disable plugin(s)' 'disable:Disable plugin(s)'
...@@ -176,7 +176,7 @@ function _omz::changelog { ...@@ -176,7 +176,7 @@ function _omz::changelog {
local version=${1:-HEAD} format=${3:-"--text"} local version=${1:-HEAD} format=${3:-"--text"}
if ( if (
cd "$ZSH" builtin cd -q "$ZSH"
! command git show-ref --verify refs/heads/$version && \ ! command git show-ref --verify refs/heads/$version && \
! command git show-ref --verify refs/tags/$version && \ ! command git show-ref --verify refs/tags/$version && \
! command git rev-parse --verify "${version}^{commit}" ! command git rev-parse --verify "${version}^{commit}"
...@@ -761,7 +761,7 @@ function _omz::theme::use { ...@@ -761,7 +761,7 @@ function _omz::theme::use {
} }
function _omz::update { function _omz::update {
local last_commit=$(cd "$ZSH"; git rev-parse HEAD) local last_commit=$(builtin cd -q "$ZSH"; git rev-parse HEAD)
# Run update script # Run update script
if [[ "$1" != --unattended ]]; then if [[ "$1" != --unattended ]]; then
...@@ -777,7 +777,7 @@ function _omz::update { ...@@ -777,7 +777,7 @@ function _omz::update {
command rm -rf "$ZSH/log/update.lock" command rm -rf "$ZSH/log/update.lock"
# Restart the zsh session if there were changes # Restart the zsh session if there were changes
if [[ "$1" != --unattended && "$(cd "$ZSH"; git rev-parse HEAD)" != "$last_commit" ]]; then if [[ "$1" != --unattended && "$(builtin cd -q "$ZSH"; git rev-parse HEAD)" != "$last_commit" ]]; then
# Old zsh versions don't have ZSH_ARGZERO # Old zsh versions don't have ZSH_ARGZERO
local zsh="${ZSH_ARGZERO:-${functrace[-1]%:*}}" local zsh="${ZSH_ARGZERO:-${functrace[-1]%:*}}"
# Check whether to run a login shell # Check whether to run a login shell
...@@ -787,7 +787,7 @@ function _omz::update { ...@@ -787,7 +787,7 @@ function _omz::update {
function _omz::version { function _omz::version {
( (
cd "$ZSH" builtin cd -q "$ZSH"
# Get the version name: # Get the version name:
# 1) try tag-like version # 1) try tag-like version
......
...@@ -36,11 +36,11 @@ function current_epoch() { ...@@ -36,11 +36,11 @@ function current_epoch() {
function is_update_available() { function is_update_available() {
local branch local branch
branch=${"$(cd "$ZSH"; git config --local oh-my-zsh.branch)":-master} branch=${"$(cd -q "$ZSH"; git config --local oh-my-zsh.branch)":-master}
local remote remote_url remote_repo local remote remote_url remote_repo
remote=${"$(cd "$ZSH"; git config --local oh-my-zsh.remote)":-origin} remote=${"$(cd -q "$ZSH"; git config --local oh-my-zsh.remote)":-origin}
remote_url=$(cd "$ZSH"; git config remote.$remote.url) remote_url=$(cd -q "$ZSH"; git config remote.$remote.url)
local repo local repo
case "$remote_url" in case "$remote_url" in
...@@ -58,7 +58,7 @@ function is_update_available() { ...@@ -58,7 +58,7 @@ function is_update_available() {
# Get local HEAD. If this fails assume there are updates # Get local HEAD. If this fails assume there are updates
local local_head local local_head
local_head=$(cd "$ZSH"; git rev-parse $branch 2>/dev/null) || return 0 local_head=$(cd -q "$ZSH"; git rev-parse $branch 2>/dev/null) || return 0
# Get remote HEAD. If no suitable command is found assume there are updates # Get remote HEAD. If no suitable command is found assume there are updates
# On any other error, skip the update (connection may be down) # On any other error, skip the update (connection may be down)
...@@ -136,7 +136,7 @@ function update_ohmyzsh() { ...@@ -136,7 +136,7 @@ function update_ohmyzsh() {
fi fi
# Test if Oh My Zsh directory is a git repository # Test if Oh My Zsh directory is a git repository
if ! (cd "$ZSH" && LANG= git rev-parse &>/dev/null); then if ! (cd -q "$ZSH" && LANG= git rev-parse &>/dev/null); then
echo >&2 "[oh-my-zsh] Can't update: not a git repository." echo >&2 "[oh-my-zsh] Can't update: not a git repository."
return return
fi fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment