[PATCH] bash-completion: Support running with set -u in bash 4.0
From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:48:24
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Thomas Nilsson <redacted>
Date: Tue, 23 Feb 2010 12:13:00 +0100
Starting with bash 4.0-beta, under "set -u" semantics, accessing
undefined local variables is now an error. Some user environments
enable this setting in the interactive shell, with unpleasant results:
knirch@traktor:~/source/external/git (master)$ set -o unset
bash: w: unbound variable
knirch@traktor:~/source/external/git$ git ^Ibash: command: unbound variable
bash: w: unbound variable
knirch@traktor:~/source/external/git$
bash: w: unbound variable
knirch@traktor:~/source/external/git$
Most of these variables should be bound to "". In contexts where the
completion functions should access an undefined variable, accessing a
default empty string (as in "${1-}" instead of "$1") is a reasonable
way to cope, as it silences the undefined variable error while still
supplying an empty string.
Signed-off-by: Jonathan Nieder <redacted>
---
Sent by Thomas to <http://bugs.debian.org/571087> (thanks!). One
might use 'set -u' in an interactive shell while manually
single-stepping through a shell script, perhaps.
contrib/completion/git-completion.bash | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index fe93747..d97467e 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash@@ -84,8 +84,8 @@ __git_ps1 () { local g="$(__gitdir)" if [ -n "$g" ]; then - local r - local b + local r="" + local b="" if [ -f "$g/rebase-merge/interactive" ]; then r="|REBASE-i" b="$(cat "$g/rebase-merge/head-name")"
@@ -127,11 +127,11 @@ __git_ps1 () } fi - local w - local i - local s - local u - local c + local w="" + local i="" + local s="" + local u="" + local c="" if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then if [ "true" = "$(git rev-parse --is-bare-repository 2>/dev/null)" ]; then
@@ -2181,7 +2181,7 @@ _git () c=$((++c)) done - if [ -z "$command" ]; then + if [ -z "${command-}" ]; then case "${COMP_WORDS[COMP_CWORD]}" in --*) __gitcomp " --paginate
--
1.7.0