From: Thomas Nilsson <thomas.nilsson@xxxxxxxxxxxxx> 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 <jrnieder@xxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html