From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fabrice Popineau Subject: Re: How to use org mode shell with ssh? Date: Thu, 22 Sep 2016 22:30:12 +0200 Message-ID: References: <87eg4c8gfs.fsf@yandex.com> <87lgykrq3x.fsf@yandex.com> <874m58yokc.fsf@gmail.com> Reply-To: fabrice.popineau@centralesupelec.fr Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a113cc25290aa26053d1e887c Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57461) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bnAdu-0000Xe-LW for emacs-orgmode@gnu.org; Thu, 22 Sep 2016 16:30:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bnAdr-0001mK-9a for emacs-orgmode@gnu.org; Thu, 22 Sep 2016 16:30:50 -0400 Received: from smtp2.supelec.fr ([160.228.120.31]:37845) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bnAdq-0001ai-VK for emacs-orgmode@gnu.org; Thu, 22 Sep 2016 16:30:47 -0400 Received: from localhost (localhost [127.0.0.1]) by smtp2.supelec.fr (Postfix) with ESMTP id 6DD058017F for ; Thu, 22 Sep 2016 22:30:34 +0200 (CEST) Received: from smtp2.supelec.fr ([127.0.0.1]) by localhost (smtp2.supelec.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IejyUQKmdN-F for ; Thu, 22 Sep 2016 22:30:34 +0200 (CEST) Received: from mail-ua0-f172.google.com (mail-ua0-f172.google.com [209.85.217.172]) by smtp2.supelec.fr (Postfix) with ESMTPSA id CF7EA800CC for ; Thu, 22 Sep 2016 22:30:33 +0200 (CEST) Received: by mail-ua0-f172.google.com with SMTP id q42so11789405uaq.1 for ; Thu, 22 Sep 2016 13:30:33 -0700 (PDT) In-Reply-To: <874m58yokc.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nick Dokos Cc: "emacs-orgmode@gnu.org" --001a113cc25290aa26053d1e887c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable My $0.02 As I'm using Emacs on Windows, with MSYS2+MingW64, I tried this. There is a problem with using bash from a _native_ MingW64 Emacs: bash is a MSYS2 app and Emacs is a MingW64 app. >From emacs, I would have used the plink protocol, so that's what I did. And I got this message in the *Org-Babel Error Output* buffer /bin/sh: 1: C:/Local/Emacs/bin/cmdproxy.exe: not found So I looked at ob-eval.el and the org-babel-eval function. And there are at least 2 big problems. 1- when entering this function, the `command' parameter is "C:/Local/Emacs/bin/cmdproxy.exe" 2 - the `shell-file-name' variable has the same value So the following won't work for Windows : ;; Unfortunately, `executable-find' does not support file name ;; handlers. Therefore, we could use it in the local case ;; only. (shell-file-name (cond ((and (not (file-remote-p default-directory)) (executable-find shell-file-name)) shell-file-name) ((file-executable-p (concat (file-remote-p default-directory) shell-file-name)) shell-file-name) ("/bin/sh"))) BTW I don't see the point concatenating shell-file-name with default-directory when the later is remote. Do we expect to find the shell in the remote directory ? Anyway, there is little chance this stuff will work under Windows with a native Emacs. If I find time, I may try to propose some fix. Fabrice 2016-09-22 16:52 GMT+02:00 Nick Dokos : > Colin Baxter writes: > > > >> #+BEGIN_SRC shell :dir /scp:openwrt:/mnt/sda1 > >> ls -al > >> #+END_SRC > >> > >> The error, I think, is from the remote end. > >> > >> /bin/sh: /bin/zsh: not found > >> > >> Clearly, I am using zsh on my Windows, but my remote OpenWRT system > only has ash installed. Is > >> there's way to specify the shell to use on the remote end? > >> > > > > I can't help you here. I've never used openwrt. All I can suggest is to > > search openwrt documentation or try with cgywin. > > > > IIUC, openwrt is the name of the remote node - nothing to do with OpenWrt > (except of course, that > the remote node may be a router which has been flashed with OpenWrt, but > that should make no > difference to ssh/tramp). > > -- > Nick > > > --=20 Fabrice Popineau ----------------------------- SUPELEC D=C3=A9partement Informatique 3, rue Joliot Curie 91192 Gif/Yvette Cedex Tel direct : +33 (0) 169851950 Standard : +33 (0) 169851212 ------------------------------ --001a113cc25290aa26053d1e887c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
My $0.02

As I'm using Emacs o= n Windows, with MSYS2+MingW64, I tried this.
There is a problem with us= ing bash from a _native_ MingW64 Emacs:
bash is a MSYS2 app and E= macs is a MingW64 app.

From emacs, I would have us= ed the plink protocol, so that's what I did.
And I got this m= essage in the *Org-Babel Error Output* buffer

/bin= /sh: 1: C:/Local/Emacs/bin/cmdproxy.exe: not found

=
So I looked at ob-eval.el and the org-babel-eval function.=C2=A0
=
And there are at least 2 big problems.
1- when entering this= function, the `command' parameter is "C:/Local/Emacs/bin/cmdproxy= .exe"
2 - the `shell-file-name' variable has the same va= lue
So the following won't work for Windows :
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Unfortunately, `executable-find' does no= t support file name
;; handlers.=C2=A0 Therefore, we could use it in = the local case
;; only.
(shell-file-name
(cond ((and (n= ot (file-remote-p default-directory))
=C2=A0 =C2=A0 (executable-fin= d shell-file-name))
shell-file-name)
=C2=A0 =C2=A0 =C2=A0 ((f= ile-executable-p
(concat (file-remote-p default-directory) shell-fi= le-name))
shell-file-name)
=C2=A0 =C2=A0 =C2=A0 ("/bin/s= h")))

BTW I don't see the point con= catenating shell-file-name with default-directory when the later is remote.=
Do we expect to find the shell in the remote directory ?

Anyway, there is little chance this stuff will work under= Windows with a native Emacs.
If I find time, I may try to propos= e some fix.

Fabrice


2016-09-22 16:52 GMT+= 02:00 Nick Dokos <ndokos@gmail.com>:
Colin Baxter <m43cap@yandex.com> writes:


>> #+BEGIN_SRC shell :dir /scp:openwrt:/mnt/sda1
>> ls -al
>> #+END_SRC
>>
>> The error, I think, is from the remote end.
>>
>> /bin/sh: /bin/zsh: not found
>>
>> Clearly, I am using zsh on my Windows, but my remote OpenWRT syste= m only has ash installed. Is
>> there's way to specify the shell to use on the remote end?
>>
>
> I can't help you here. I've never used openwrt. All I can sugg= est is to
> search openwrt documentation or try with cgywin.
>

IIUC, openwrt is the name of the remote node - nothing to do with Op= enWrt (except of course, that
the remote node may be a router which has been flashed with OpenWrt, but th= at should make no
difference to ssh/tramp).

--
Nick





--
Fabrice= Popineau
-----------------------------
SUPELEC
D= =C3=A9partement Informatique
3, rue Joliot Curie
91192 = Gif/Yvette Cedex
Tel direct : +33 (0) 169851950
Standar= d : +33 (0) 169851212
------------------------------
--001a113cc25290aa26053d1e887c--