Package: less
Version: 551-2
Severity: wishlist
Hi.
1) lesspipe mangpage says:
>USAGE
> Just put one of the following two commands in your login script (e.g.
> ~/.bash_profile):
> eval "$(lessfile)"
> or
> eval "$(lesspipe)"
This is however not enough in some cases, which lead to #385168 long ago.
It would be nice if there was a note, that the script uses SHELL to determine
the output, but SHELL isn't re-set by e.g. bash, if already set.
So one should ideally invoke the above like:
eval "$(SHELL=/name/of/the/actual/shell lessfile)"
2) if [ -z "$PS1" ]; then
exit
fi
Is IMO a bad check for interactiveness (and it shouldn't be exit, but return?):
a) This will break if PS1 is unset and "set -u" is active, ${PS1-} would solve
this.
b) But IMO it's anyway better to check for "i" in $-.
A user could have set an empty prompt (unlikely, but possible) and then the
shell
would be considiered non-interactive - while it's not.
Also, PS1 could always be there in non-interactive shell (by accident).
OTOH, AFAIU, "i" in $- is really only set by the shell if it considers itself
interactive.
The following should be a proper check for that:
if [ -n "${-##*i*}" -o -z "${-}" ]; then
return
fi
It's better than the various constructs with case or [[ since it's posix
compatible,
and not prone to shopt nocasematch being on.
Cheers,
Chris.