Hello dear emacs maintainers,
If the local used shell does not exist on the remote the shell-command-to-string function from simple.el does not work as expected. The reason for this is that the variable shell-file-name is wrong and therefore one only gets a string saying that the shell does not exist.
Changing the function to
(defun shell-command-to-string (command)
"Execute shell command COMMAND and return its output as a string."
(with-output-to-string
(with-current-buffer
standard-output
(let ((shell-file-name
(with-temp-buffer
(apply #'process-file "printenv" nil t nil '("SHELL"))
(string-trim-right (buffer-string)))))
(process-file shell-file-name nil t nil shell-command-switch command)))))
does work for remotes that do not have the local shell, too.
I hope this is the right place for this and additionally wanted to thank you for maintaining emacs.
Best regards,
Benedikt Tissot