summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorYuriy Taraday <yorik.sar@gmail.com>2020-10-21 00:03:38 +0400
committerYuriy Taraday <yorik.sar@gmail.com>2020-10-21 00:03:38 +0400
commit39fbd3d82823ae6eadfbf91bb2b356caef90841c (patch)
tree69b21ed22dae61eb6970ff18ee81b3c48b1d1ad9 /scripts
parent21244e1062f92c9eb603f9dd5ed8210f159738e9 (diff)
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.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/nix-profile-daemon.sh.in18
1 files changed, 14 insertions, 4 deletions
diff --git a/scripts/nix-profile-daemon.sh.in b/scripts/nix-profile-daemon.sh.in
index 4bc7c6fc5..500a98992 100644
--- a/scripts/nix-profile-daemon.sh.in
+++ b/scripts/nix-profile-daemon.sh.in
@@ -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
else
# Fall back to what is in the nix profiles, favouring whatever is defined last.
- 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
+ check_nix_profiles() {
+ if [ "$ZSH_VERSION" ]; then
+ # 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
- 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
export PATH="$HOME/.nix-profile/bin:@localstatedir@/nix/profiles/default/bin:$PATH"