Browse Source

fix(zsh): disallow duplicates in PATH

Joe 1 năm trước cách đây
mục cha
commit
437d0b9b58
1 tập tin đã thay đổi với 29 bổ sung12 xóa
  1. 29 12
      .config/zsh/.zshenv

+ 29 - 12
.config/zsh/.zshenv

@@ -2,22 +2,39 @@
 # $PATH and similar
 ################################################################################
 export GOPATH="$HOME/.go"
+# Add to path without duplicates
+function add_to_path {
+    if [[ ! ":$PATH:" == *":$1:"* ]]; then
+        if [ "$2" = true ] ; then
+            PATH=":$1:$PATH:"
+        else
+            PATH="$PATH:$1:"
+        fi
+        PATH=${PATH/::/:/.}
+        if [[ "$PATH" == ":"* ]]; then
+            PATH="${PATH:1}"
+        fi
+        if [[ "$PATH" == *":" ]]; then
+            PATH="${PATH::-1}"
+        fi
+    fi
+}
 
-PATH="/opt/homebrew/bin:${PATH}"
-PATH="/opt/homebrew/sbin:${PATH}"
-# Additional Homebrew items that aren't linked by default
-PATH="/opt/homebrew/opt/ruby/bin:${PATH}"
-PATH="/opt/homebrew/opt/libpq/bin:${PATH}"
+add_to_path "/usr/local/bin/" true
+add_to_path "/opt/homebrew/sbin" true
+add_to_path "/opt/homebrew/bin" true
 
-PATH="${HOME}/.scripts:${PATH}"
+# Additional Homebrew items that aren't linked by default
+add_to_path "/opt/homebrew/opt/ruby/bin"
+add_to_path "/opt/homebrew/opt/libpq/bin"
 
-PATH="${PATH}:/usr/local/bin"
+add_to_path "${HOME}/.scripts"
 
-PATH="${GOPATH}/bin:${PATH}"
-PATH="${HOME}/.gem/bin:${PATH}"
-PATH="${HOME}/.cargo/bin:${PATH}"
-PATH="${HOME}/.poetry/bin:${PATH}"
-PATH="${HOME}/.rvm/bin:${PATH}"
+add_to_path "${GOPATH}/bin"
+add_to_path "${HOME}/.gem/bin"
+add_to_path "${HOME}/.cargo/bin"
+add_to_path "${HOME}/.poetry/bin"
+add_to_path "${HOME}/.rvm/bin"
 
 export PATH