Function: async-shell-command

async-shell-command is an interactive and byte-compiled function defined in simple.el.gz.

Signature

(async-shell-command COMMAND &optional OUTPUT-BUFFER ERROR-BUFFER)

Documentation

Execute string COMMAND asynchronously in background.

Like shell-command, but adds & at the end of COMMAND to execute it asynchronously.

The output appears in the buffer whose name is stored in the variable shell-command-buffer-name-async. That buffer is in shell mode.

You can configure async-shell-command-buffer to specify what to do when the buffer specified by shell-command-buffer-name-async is already taken by another running shell command.

To run COMMAND without displaying the output in a window you can configure display-buffer-alist to use the action display-buffer-no-window for the buffer given by shell-command-buffer-name-async.

In Elisp, you will often be better served by calling start-process directly, since it offers more control and does not impose the use of a shell (with its need to quote arguments).

Probably introduced at or before Emacs version 23.2.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/simple.el.gz
(defun async-shell-command (command &optional output-buffer error-buffer)
  "Execute string COMMAND asynchronously in background.

Like `shell-command', but adds `&' at the end of COMMAND
to execute it asynchronously.

The output appears in the buffer whose name is stored in the
variable `shell-command-buffer-name-async'.  That buffer is in
shell mode.

You can configure `async-shell-command-buffer' to specify what to do
when the buffer specified by `shell-command-buffer-name-async' is
already taken by another running shell command.

To run COMMAND without displaying the output in a window you can
configure `display-buffer-alist' to use the action
`display-buffer-no-window' for the buffer given by
`shell-command-buffer-name-async'.

In Elisp, you will often be better served by calling `start-process'
directly, since it offers more control and does not impose the use of
a shell (with its need to quote arguments)."
  (interactive
   (list
    (read-shell-command (if shell-command-prompt-show-cwd
                            (format-message "Async shell command in `%s': "
                                            (abbreviate-file-name
                                             default-directory))
                          "Async shell command: ")
                        nil nil
			(let ((filename
			       (cond
				(buffer-file-name)
				((eq major-mode 'dired-mode)
				 (dired-get-filename nil t)))))
			  (and filename (file-relative-name filename))))
    current-prefix-arg
    shell-command-default-error-buffer))
  (unless (string-match "&[ \t]*\\'" command)
    (setq command (concat command " &")))
  (shell-command command output-buffer error-buffer))