> I can.  I just want to know if the command is available for my script to
> use; I don't care about the latest flamewar that moved it in or out of
> /usr or */sbin.

You are searching for a particular word, and that word may represent
a binary/script, a shell function, a shell alias, a shell builtin.
There may be many of the aforementioned things with the same name.
No mechanism exists to determine whether or not these things perform
similar actions or have similar interfaces.

Let's say that I want to run deathrampage in my postinst.  deathrampage
is a binary in a package of the same name, and this is the deathrampage
that I wish to have executed.  There are many ways for me to check for it:

(A) deathrampage || echo uh-oh, continuing without it

Advantages: portable
Disadvantages: requires running the program in question

(B) test -x /usr/sbin/deathrampage && /usr/sbin/deathrampage

Advantages: portable, will not execute the wrong deathrampage unless
  someone has placed an impostor in /usr/sbin
Disadvantages: will fail silently if deathrampage is moved to /usr/bin

(C) multiple tests, or loop of tests

Advantages: portable, will handle multiple finite locations
Disadvantages: will fail silently if deathrampage is moved beyond the
  finite list of locations

(D) command -v deathrampage 2>/dev/null && deathrampage
 OR type deathrampage 2>/dev/null && deathrampage

Advantages: will find and execute deathrampage anywhere
Disadvantages: will find and execute deathrampage anywhere, no matter if
  it is an alias to 'rm -rf /', a shell function that initiates
  immediate reboot, or some other bizarre and unexpected thing.  Not
  POSIX-compliant.

(E) which deathrampage 2>/dev/null && command deathrampage

Advantages: will find and execute deathrampage on the command search path.
Disadvantages: not standardized at all.  builtin which's will not
  likely have the same interface.

(F) /usr/bin/which deathrampage 2>/dev/null && command deathrampage

Advantages: will find and execute deathrampage on the command search path.
Disadvantages: requires faith in /usr/bin/which not moving or changing

(G) dpkg -S deathrampage && some other stuff

Advantages: will only find deathrampages tracked by the Debian packaging
  system.
Disadvantages: slow and cumbersome

(H) #!/bin/specific shell, and use known whence, which, type commands

Advantages: no portability problems, and you might get exactly what you
  want
Disadvantages: annoying to users everywhere

(I) invent a Debian-specific solution to this problem

Advantages: less confusion
Disadvantages: requires cognition, and people seem to feel differently
  about whether or not they want random shell aliases, functions, and
  binaries in /usr/local being executed by package scripts.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to