@item SHELL
@vindex SHELL@r{, environment variable}
The name of an interpreter used to parse and execute programs run from
-inside Emacs.
+inside Emacs. This is used to initialize the variable
+@code{shell-file-name} (@pxref{Single Shell}).
@item SMTPSERVER
@vindex SMTPSERVER@r{, environment variable}
The name of the outgoing mail server. This is used to initialize the
buffer whose name is the value of @code{shell-command-buffer-name}.
@vindex shell-file-name
+@cindex @env{SHELL} environment variable
The above commands use the shell specified by the variable
@code{shell-file-name}. Its default value is determined by the
@env{SHELL} environment variable when Emacs is started. If the file
@vindex explicit-shell-file-name
@cindex environment variables for subshells
@cindex @env{ESHELL} environment variable
-@cindex @env{SHELL} environment variable
To specify the shell file name used by @kbd{M-x shell}, customize
the variable @code{explicit-shell-file-name}. If this is @code{nil}
(the default), Emacs uses the environment variable @env{ESHELL} if it
(script (format "ls %s %s" switches (cdr dir-wildcard)))
(remotep (file-remote-p dir))
(sh (or (and remotep "/bin/sh")
- (and (bound-and-true-p explicit-shell-file-name)
- (executable-find explicit-shell-file-name))
+ (executable-find shell-file-name)
(executable-find "sh")))
(switch (if remotep "-c" shell-command-switch)))
;; Enable globstar
;;>> more-processing enabled.
(require 'ehelp)
+(require 'shell)
(defgroup terminal nil
"Terminal emulator for Emacs."
;; This used to have `new' in it, but that loses outside BSD
;; and it's apparently not needed in BSD.
-(defcustom explicit-shell-file-name nil
- "If non-nil, is file name to use for explicitly requested inferior shell."
- :type '(choice (const :tag "None" nil)
- file)
- :group 'terminal)
-
;;;###autoload
(defun terminal-emulator (buffer program args &optional width height)
"Under a display-terminal emulator in BUFFER, run PROGRAM on arguments ARGS.
:group 'shell-directories)
(defcustom explicit-shell-file-name nil
- "If non-nil, is file name to use for explicitly requested inferior shell.
-When nil, such interactive shell sessions fallback to using either
-the shell specified in $ESHELL or in `shell-file-name'."
- :type '(choice (const :tag "None" nil) file)
+ "If non-nil, the file name to use for explicitly requested inferior shells.
+When nil, such interactive shell sessions fall back to using the
+shell specified in either the environment variable \"ESHELL\" or
+`shell-file-name'."
+ :type '(choice (const :tag "Default" nil) file)
:group 'shell)
;; Note: There are no explicit references to the variable `explicit-csh-args'.
(with-connection-local-variables
;; On remote hosts, the local `shell-file-name' might be useless.
- (when (file-remote-p default-directory)
- (if (and (called-interactively-p 'any)
+ (when (and (file-remote-p default-directory)
+ (called-interactively-p 'any)
(null explicit-shell-file-name)
(null (getenv "ESHELL")))
- (set (make-local-variable 'explicit-shell-file-name)
- (file-local-name
- (expand-file-name
- (read-file-name
- "Remote shell path: " default-directory shell-file-name
- t shell-file-name))))))
+ (setq-local explicit-shell-file-name
+ (file-local-name
+ (expand-file-name
+ (read-file-name "Remote shell path: " default-directory
+ shell-file-name t shell-file-name)))))
;; Rain or shine, BUFFER must be current by now.
(unless (comint-check-proc buffer)
;; so it is important to increase it if there are protocol-relevant changes.
(defconst term-protocol-version "0.96")
-(eval-when-compile (require 'ange-ftp))
-(eval-when-compile (require 'cl-lib))
-(require 'ring)
-(require 'ehelp)
+(eval-when-compile
+ (require 'ange-ftp)
+ (require 'cl-lib))
(require 'comint) ; Password regexp.
-
-(declare-function ring-empty-p "ring" (ring))
-(declare-function ring-ref "ring" (ring index))
-(declare-function ring-insert-at-beginning "ring" (ring item))
-(declare-function ring-length "ring" (ring))
-(declare-function ring-insert "ring" (ring item))
+(require 'ehelp)
+(require 'ring)
+(require 'shell)
(defgroup term nil
"General command interpreter in a window."
(defvar-local term-line-mode-buffer-read-only nil
"The `buffer-read-only' state to set in `term-line-mode'.")
-(defcustom explicit-shell-file-name nil
- "If non-nil, is file name to use for explicitly requested inferior shell."
- :type '(choice (const nil) file)
- :group 'term)
-
(defvar term-prompt-regexp "^"
"Regexp to recognize prompts in the inferior process.
Defaults to \"^\", the null string at BOL.