help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: system-command-exists-p


From: Pascal J. Bourguignon
Subject: Re: system-command-exists-p
Date: Mon, 07 Dec 2009 11:13:10 +0100
User-agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.3 (darwin)

Andreas Roehler <address@hidden> writes:

> Hi,
>
> needed a check if a command exists on system.
> Employed the following:
>
> (defun system-command-exists-p (command)
>   "Return t if COMMAND is available on system. "
>   (let* ((cmd (format "type %s" command)))
>     (eq 0 (shell-command cmd))))
>
> Any comments/suggestions?

Use %S or (shell-quote-argument command).

type is a built-in command specific to the sh familly of shells.
Perhaps it would be a good idea to explicitely call up sh?

It may be useful to return the path of the command:

(defun system-command-exists-p (command)
  "Return t if COMMAND is available on system. "
  (let* ((cmd (format "/bin/sh -c 'type %s'" 
                      (shell-quote-argument command))))
    (when (eql 0  (shell-command cmd))
      (let ((result (shell-command-to-string cmd)))
        (if (string-match "^.* is \\(.*\\)\n$"result)
            (match-string 1 result)
            result)))))

(mapcar (function system-command-exists-p)
        '("cat" "type" "foo"))
--> ("/bin/cat" "a shell builtin" nil)



-- 
__Pascal Bourguignon__


reply via email to

[Prev in Thread] Current Thread [Next in Thread]