Import bash-completion slightly more carefully #1908
Merged
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.
Description
Uses the
$BASH_COMPLETION
variable to locate the script if defined, falling back to the existing waterfall. For the final case (Homebrew), use$OSTYPE
instead of running an external command, and then import the script itself rather than the wrapper in theprofile.d
folder.Motivation and Context
The bash-completion script itself allows for
$BASH_COMPLETION
,$BASH_COMPLETION_COMPAT_DIR
, and$BASH_COMPLETION_DIR
to be set prior to invocation and in fact at least$BASH_COMPLETION_COMPAT_DIR
needs to be in order to be useful. This can allow for different versions to be used when, for example, Bash is v4+ or not.However, the wrapper script in
.../etc/profile.d/bash_completion.sh
on many distributions actually short-circuits if$BASH_COMPLETION
is defined. When theprofile.d
wrapper is used while$BASH_COMPLETION
is already defined, bash-completion is simply never once loaded as the wrapper and the actual script disagree about this variable.How Has This Been Tested?
This is live on my branch on my computer currently.
Types of changes
Checklist:
clean_files.txt
and formatted it usinglint_clean_files.sh
.