Fix iterating over $NIX_PROFILES in Zsh
NIX_PROFILES is space separated list of directories, and passing it into for as is is considered to be 1-element list with the whole string. With shwordsplit option Zsh emulates other shells in this regard ans implicitely splits unquoted strings into words. Fixes #4167.
This commit is contained in:
parent
21244e1062
commit
39fbd3d828
|
@ -17,11 +17,21 @@ elif [ -e /etc/pki/tls/certs/ca-bundle.crt ]; then # Fedora, CentOS
|
||||||
export NIX_SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt
|
export NIX_SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt
|
||||||
else
|
else
|
||||||
# Fall back to what is in the nix profiles, favouring whatever is defined last.
|
# Fall back to what is in the nix profiles, favouring whatever is defined last.
|
||||||
for i in $NIX_PROFILES; do
|
check_nix_profiles() {
|
||||||
if [ -e $i/etc/ssl/certs/ca-bundle.crt ]; then
|
if [ "$ZSH_VERSION" ]; then
|
||||||
export NIX_SSL_CERT_FILE=$i/etc/ssl/certs/ca-bundle.crt
|
# Zsh by default doesn't split words in unquoted parameter expansion.
|
||||||
|
# Set local_options for these options to be reverted at the end of the function
|
||||||
|
# and shwordsplit to force splitting words in $NIX_PROFILES below.
|
||||||
|
setopt local_options shwordsplit
|
||||||
fi
|
fi
|
||||||
done
|
for i in $NIX_PROFILES; do
|
||||||
|
if [ -e $i/etc/ssl/certs/ca-bundle.crt ]; then
|
||||||
|
export NIX_SSL_CERT_FILE=$i/etc/ssl/certs/ca-bundle.crt
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
check_nix_profiles
|
||||||
|
unset -f check_nix_profiles
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export PATH="$HOME/.nix-profile/bin:@localstatedir@/nix/profiles/default/bin:$PATH"
|
export PATH="$HOME/.nix-profile/bin:@localstatedir@/nix/profiles/default/bin:$PATH"
|
||||||
|
|
Loading…
Reference in a new issue