CodingGuidelines: do not use 'which' in shell scripts
authorTim Henigan <tim.henigan@gmail.com>
Fri, 24 Feb 2012 23:12:58 +0000 (18:12 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Feb 2012 23:10:23 +0000 (15:10 -0800)
During the code review of a recent patch, it was noted that shell scripts
must not use 'which $cmd' to check the availability of the command $cmd.
The output of the command is not machine parseable and its exit code is
not reliable across platforms.

It is better to use 'type' to accomplish this task.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/CodingGuidelines
index cfe3785909a813bb3a115e02996b3201ade3636f..45577117c2a02dd4a4f9e63e78139b3df665b8f2 100644 (file)
@@ -46,6 +46,11 @@ For shell scripts specifically (not exhaustive):
    properly nests.  It should have been the way Bourne spelled
    it from day one, but unfortunately isn't.
 
    properly nests.  It should have been the way Bourne spelled
    it from day one, but unfortunately isn't.
 
+ - If you want to find out if a command is available on the user's
+   $PATH, you should use 'type <command>', instead of 'which <command>'.
+   The output of 'which' is not machine parseable and its exit code
+   is not reliable across platforms.
+
  - We use POSIX compliant parameter substitutions and avoid bashisms;
    namely:
 
  - We use POSIX compliant parameter substitutions and avoid bashisms;
    namely: