Package: sensible-utils
Version: 0.0.22
Severity: normal
After the upgrade to 0.0.22, I'm getting the following error with
sensible-pager:
realpath: '': No such file or directory
(the other sensible-* utilities are likely to have the same issue
since the related code is very similar).
This is due to
# Prevent recursive loops, where environment variables are set to this
script
[ x$(realpath "$(command -v "$candidate" || true)" || true) = x"$program" ]
&& return
where $candidate is a command with arguments. For instance,
I have PAGER="less -Lis". Hence the issue.
The full string for "command -v" is expected to be the executable name
(without arguments). So the executable is not found, and "command -v"
fails without any output, so that realpath outputs an error to stderr
for this reason.
There is the same issue when the command doesn't exist:
cventin:~> PAGER=foo sensible-pager
realpath: '': No such file or directory
PAGER: 1: foo: not found
Missing filename ("less --help" for help)
In any case, the "realpath: '': No such file or directory" just
concerns internals and should be hidden from the user.
The problem is actually worse than the error message as there can
be a loop:
cventin:~> PAGER="sensible-pager " sensible-pager
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
[...]
So I suggest 2 fixes:
1. In the candidate, take only everything until the first space,
i.e. use "${candidate%% *}" instead of "$candidate".
2. Redirect the realpath standard error to /dev/null in order to
avoid the error message when the executable is not found.
This gives:
# Prevent recursive loops, where environment variables are set to this
script
[ x$(realpath "$(command -v "${candidate%% *}" || true)" 2> /dev/null ||
true) = x"$program" ] && return
-- System Information:
Debian Release: trixie/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'stable-updates'), (500,
'stable-security'), (500, 'stable-debug'), (500, 'proposed-updates-debug'),
(500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.6.13-amd64 (SMP w/12 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
-- no debconf information
--
Vincent Lefèvre <[email protected]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)