On Wed, Aug 18, 2021 at 13:28:14 +0900, Norbert Preining wrote:
...
> but being noisy about it on any invocation, **without** providing
> an alternative is a no go
...
> Please use NEWS, or whatever other channels, and above all, **provide
> information on a replacement!**

I checked 'man which' when I saw the text; the DEPRECATION section hints
at the replacements, though it could more directly suggest 'command -v'.
That appears equivalent for any use with a single argument, when special
printing of a shell alias, function, or builtin is acceptable.  Notably,
it would handle everything I saw in /var/lib/dpkg/info, where I observed
3 patterns of use:
 * direct, as in console-setup.config:
      if which uname >/dev/null; then
 * redundantly combined with test -x, as in libssl1.1:amd64.postinst:
      if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
 * used with an "invalid" argument, as in libreoffice-common.postrm:
      if [ -x "`which ucfr --force 2>/dev/null`" ]; then

All are simply checking whether a command is present.

How about providing the following text?
  The 'which' utility will be removed in the future.  Shell scripts often use
  it to check whether a command is available.  A more standard way to do this
  is with 'command -v'; for example:
      if command -v update-icon-caches >/dev/null; then
        update-icon-caches /usr/share/icons/...
      fi

'2>/dev/null' is unnecessary when using 'command': POSIX says "no output
shall be written" if the command isn't found.  It's also unnecessary for
the debianutils version of 'which', and hides the deprecation warning.

-- Michael

Attachment: signature.asc
Description: PGP signature

Reply via email to