Fix zsh parse error in pipenv shell command#6504
Merged
Conversation
Fixes #6503 The previous implementation used 'declare -f' inside an eval statement for both bash and zsh. However, zsh handles command substitution differently - it expands $() before parsing the function definition, causing a parse error: 'zsh: parse error near }'' This fix separates the zsh and bash cases: - zsh: Uses 'functions -c' to copy function definitions (same approach as fish) - bash: Continues using 'declare -f' which works correctly in bash Also enhanced the test to verify zsh uses 'functions -c' (not 'declare -f') to prevent future regressions.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #6503
#6462 introduced a regression where
pipenv shellfails on ZSH with a parse error:Root Cause
The previous implementation used
declare -finside anevalstatement for both bash and zsh. However, zsh handles command substitution differently - it expands$()before parsing the function definition, causing a parse error.Solution
This fix separates the zsh and bash cases:
functions -cto copy function definitions (same approach as fish)declare -fwhich works correctly in bashTesting
Enhanced the existing unit test to verify zsh uses
functions -c(notdeclare -f) to prevent future regressions.Test Results
Pull Request opened by Augment Code with guidance from the PR author