diff --git a/libexec/pyenv-versions b/libexec/pyenv-versions index 91cb56d4..1630503c 100755 --- a/libexec/pyenv-versions +++ b/libexec/pyenv-versions @@ -42,9 +42,13 @@ versions_dir="${PYENV_ROOT}/versions" if [[ -n "$executables" ]]; then if [ -d "$versions_dir" ]; then shopt -s dotglob nullglob - # MacOS 12+ and FreeBSD 15 support `xargs -r -0' and `basename -a' - # `sort -u` is simpler and a bit faster than `awk '!seen[$0]++'`, with the same result for rehash purposes - printf '%s\0' "$versions_dir"/*/bin/* "$versions_dir"/*/envs/*/bin/* | xargs -0 -r basename -a | sort -u + # Fast path for rehash: skip filtering and link resolution. + # Discover executables directly from the versions directory and + # deduplicate their basenames. Use bash 3.2 conventions to keep code portable. + paths=( "$versions_dir"/*/bin/* "$versions_dir"/*/envs/*/bin/* ) + if [ "${#paths[@]}" -gt 0 ]; then + printf '%s\n' "${paths[@]##*/}" | sort -u + fi shopt -u dotglob nullglob fi exit 0