Function: eshell/su
eshell/su is a byte-compiled function defined in em-tramp.el.gz.
Signature
(eshell/su &rest ARGS)
Documentation
Alias "su" to call Tramp.
Uses the system su through Tramp's su method.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-tramp.el.gz
(defun eshell/su (&rest args)
"Alias \"su\" to call Tramp.
Uses the system su through Tramp's su method."
(eshell-eval-using-options
"su" args
'((?h "help" nil nil "show this usage screen")
(?l "login" nil login "provide a login environment")
(? nil nil login "provide a login environment")
:usage "[- | -l | --login] [USER]
Become another USER during a login session.")
(throw 'eshell-replace-command
(let ((user "root")
(host (or (file-remote-p default-directory 'host)
tramp-default-host))
(dir (file-local-name (expand-file-name default-directory)))
(prefix (file-remote-p default-directory)))
(dolist (arg args)
(if (string-equal arg "-") (setq login t) (setq user arg)))
(when login (setq dir "~/"))
(if (and prefix
(or
(not (string-equal
"su" (file-remote-p default-directory 'method)))
(not (string-equal
user (file-remote-p default-directory 'user)))))
(eshell-parse-command
"cd" (list (format "%s|su:%s@%s:%s"
(substring prefix 0 -1) user host dir)))
(eshell-parse-command
"cd" (list (format "/su:%s@%s:%s" user host dir))))))))