Code

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.
 
+ - 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: