* net/tramp-sh.el (tramp-get-remote-path): Use a login shell in
order to determine `tramp-own-remote-path'.
This commit is contained in:
parent
c2db939359
commit
935ee05f07
2 changed files with 36 additions and 21 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2014-12-10 Michael Albinus <michael.albinus@gmx.de>
|
||||||
|
|
||||||
|
* net/tramp-sh.el (tramp-get-remote-path): Use a login shell in
|
||||||
|
order to determine `tramp-own-remote-path'.
|
||||||
|
|
||||||
2014-12-09 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
2014-12-09 Fabián Ezequiel Gallina <fgallina@gnu.org>
|
||||||
|
|
||||||
* progmodes/python.el (python-shell-parse-command): Quote
|
* progmodes/python.el (python-shell-parse-command): Quote
|
||||||
|
|
|
@ -3847,6 +3847,18 @@ file exists and nonzero exit status otherwise."
|
||||||
(setq item (pop alist))
|
(setq item (pop alist))
|
||||||
(when (string-match (car item) shell)
|
(when (string-match (car item) shell)
|
||||||
(setq extra-args (cdr item))))
|
(setq extra-args (cdr item))))
|
||||||
|
;; It is useful to set the prompt in the following command
|
||||||
|
;; because some people have a setting for $PS1 which /bin/sh
|
||||||
|
;; doesn't know about and thus /bin/sh will display a strange
|
||||||
|
;; prompt. For example, if $PS1 has "${CWD}" in the value, then
|
||||||
|
;; ksh will display the current working directory but /bin/sh
|
||||||
|
;; will display a dollar sign. The following command line sets
|
||||||
|
;; $PS1 to a sane value, and works under Bourne-ish shells as
|
||||||
|
;; well as csh-like shells. We also unset the variable $ENV
|
||||||
|
;; because that is read by some sh implementations (eg, bash
|
||||||
|
;; when called as sh) on startup; this way, we avoid the startup
|
||||||
|
;; file clobbering $PS1. $PROMPT_COMMAND is another way to set
|
||||||
|
;; the prompt in /bin/bash, it must be discarded as well.
|
||||||
(tramp-send-command
|
(tramp-send-command
|
||||||
vec (format
|
vec (format
|
||||||
"exec env ENV='' HISTFILE=/dev/null PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
|
"exec env ENV='' HISTFILE=/dev/null PROMPT_COMMAND='' PS1=%s PS2='' PS3='' %s %s"
|
||||||
|
@ -3923,20 +3935,6 @@ seconds. If not, it produces an error message with the given ERROR-ARGS."
|
||||||
Mainly sets the prompt and the echo correctly. PROC is the shell
|
Mainly sets the prompt and the echo correctly. PROC is the shell
|
||||||
process to set up. VEC specifies the connection."
|
process to set up. VEC specifies the connection."
|
||||||
(let ((tramp-end-of-output tramp-initial-end-of-output))
|
(let ((tramp-end-of-output tramp-initial-end-of-output))
|
||||||
;; It is useful to set the prompt in the following command because
|
|
||||||
;; some people have a setting for $PS1 which /bin/sh doesn't know
|
|
||||||
;; about and thus /bin/sh will display a strange prompt. For
|
|
||||||
;; example, if $PS1 has "${CWD}" in the value, then ksh will
|
|
||||||
;; display the current working directory but /bin/sh will display
|
|
||||||
;; a dollar sign. The following command line sets $PS1 to a sane
|
|
||||||
;; value, and works under Bourne-ish shells as well as csh-like
|
|
||||||
;; shells. Daniel Pittman reports that the unusual positioning of
|
|
||||||
;; the single quotes makes it work under `rc', too. We also unset
|
|
||||||
;; the variable $ENV because that is read by some sh
|
|
||||||
;; implementations (eg, bash when called as sh) on startup; this
|
|
||||||
;; way, we avoid the startup file clobbering $PS1. $PROMPT_COMMAND
|
|
||||||
;; is another way to set the prompt in /bin/bash, it must be
|
|
||||||
;; discarded as well.
|
|
||||||
(tramp-open-shell
|
(tramp-open-shell
|
||||||
vec
|
vec
|
||||||
(or (tramp-get-connection-property vec "remote-shell" nil)
|
(or (tramp-get-connection-property vec "remote-shell" nil)
|
||||||
|
@ -5025,13 +5023,25 @@ Return ATTR."
|
||||||
"/bin:/usr/bin")
|
"/bin:/usr/bin")
|
||||||
"/bin:/usr/bin"))))
|
"/bin:/usr/bin"))))
|
||||||
(own-remote-path
|
(own-remote-path
|
||||||
|
;; We cannot apply `tramp-send-command-and-read' because
|
||||||
|
;; the login shell could return more than just the $PATH
|
||||||
|
;; string. So we emulate that function.
|
||||||
(when elt2
|
(when elt2
|
||||||
(condition-case nil
|
(tramp-send-command
|
||||||
(tramp-send-command-and-read vec "echo \\\"$PATH\\\"")
|
vec
|
||||||
(error
|
(format
|
||||||
(tramp-message
|
"%s -l %s 'echo \\\"$PATH\\\"'"
|
||||||
vec 3 "$PATH not set, ignoring `tramp-own-remote-path'.")
|
(tramp-get-method-parameter
|
||||||
nil)))))
|
(tramp-file-name-method vec) 'tramp-remote-shell)
|
||||||
|
(mapconcat
|
||||||
|
'identity
|
||||||
|
(tramp-get-method-parameter
|
||||||
|
(tramp-file-name-method vec) 'tramp-remote-shell-args)
|
||||||
|
" ")))
|
||||||
|
(with-current-buffer (tramp-get-connection-buffer vec)
|
||||||
|
(goto-char (point-max))
|
||||||
|
(forward-line -1)
|
||||||
|
(read (current-buffer))))))
|
||||||
|
|
||||||
;; Replace place holder `tramp-default-remote-path'.
|
;; Replace place holder `tramp-default-remote-path'.
|
||||||
(when elt1
|
(when elt1
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue