Re: Weird set -u error
Hi,
> $ cat Makefile.test
> SHELL := /bin/bash -u
> [...]
> /etc/bash.bashrc: line 7: PS1: unbound variable
> [...]
> Why do I get that unbound variable error?
According to a comment in /etc/bash.bashrc it tests for emptiness of PS1
in order to detect non-interactive shell sessions:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
See
https://sources.debian.org/src/bash/5.2~rc2-2/debian/etc.bash.bashrc/#L6
It should rather test for the variable being set, rather than being empty.
Jumping ahead of more skilled experts i found in the web
https://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash
which brings me to a proposal for /etc/bash.bashrc
[ -z "${PS1:+x}" ] && return
Testing it:
$ bash -u
reports various "unbound variable".
Now test whether a non-empty PS1 is properly recognized
$ [ -z "${PS1:+x}" ] && echo "empty"
$
Now with undefined PS1:
$ unset PS1
makes the prompt invisible, but
[ -z "${PS1:+x}" ] && echo "empty"
empty
and
set PS1=
[ -z "${PS1:+x}" ] && echo "empty"
empty
Back to a visible prompt:
PS1='$ '
$ [ -z "${PS1:+x}" ] && echo "empty"
$
Have a nice day :)
Thomas
Reply to: