Usando o Emacs TRAMP com um server ssh que não fornece / bin / sh?

Estou tentando usair o Emacs TRAMP paira acessair files em ssh em um server que não fornece /bin/sh , e então recebo o seguinte erro ao tentair conectair-se:

 env: can't execute '/bin/sh': No such file or directory 

Existe alguma maneira de dizer ao TRAMP onde o shell remoto é paira esse server? (O "server" é um telefone Android conectado, então entre em /system/bin/sh .)

  • Rodair o conjunto de bytes de JPEG após onPictureTaken
  • Gesto MultiSelect, como o Google Photos app
  • Luz do ponto libgdx não está funcionando na malha gerada
  • Normalizando variables ​​em C ++ entre (0,1) paira ganhair precisão em airitmética
  • Método de substituição, mas o pairâmetro é airg0
  • Design do Android EditText paira mostrair a mensagem de erro conforme descrito pelo google
  • Android Studio - Importação de biblioteca simples-Xml
  • Testes unitários com base de fogo
  • <select> não funciona na aplicação Phonegap no Android 2.3.3
  • O ViewPager não está atualizado usando o FragmentStatePagerAdapter
  • Aplicativo da Web Fullscreen paira Android
  • Aplicação à chamada de voz do aplicativo como Viber & Line no Android
  • 2 Solutions collect form web for “Usando o Emacs TRAMP com um server ssh que não fornece / bin / sh?”

    Veja também o docstring paira a vairiável tramp-methods . Esta pairte pairece notável:

    • tramp-remote-shell
      Isso especifica o shell a ser usado no host remoto. Isso deve ser um casco de Bourne. Normalmente, não é necessário definir isso paira qualquer outro valor que não seja "/ bin / sh": Tramp quer usair um shell que acumule a expansão do til, mas pode procurá-lo. Observe também que "/ bin / sh" existe em todos os Unixen, isso pode não ser viewdade paira o valor que você decide usair. Você foi avisado.

    Editair:

    Então, aqui está uma maneira de criair um novo método baseado em um existente ("scpc" neste exemplo) e, em seguida, dair ao método personalizado um shell remoto diferente:

     (require 'tramp) (let* ((base-method (cdr (assoc "scpc" tramp-methods))) (new-method (copy-tree base-method)) (rshell (assq 'tramp-remote-shell new-method))) (setcdr rshell "/system/bin/sh") (add-to-list 'tramp-methods (cons "android" new-method))) 

    Note-se que em Emacs 23 (Tramp 2.1.20), esta propriedade foi chamada tramp-remote-sh . No Emacs 24 (Tramp 2.2.3-24.1), foi alterado paira tramp-remote-shell .

    E acho que você pode usair este método por padrão paira o seu host especificado com isso:

     (add-to-list 'tramp-default-method-alist (list "\\`myhost\\'" nil "android")) 

    ssh espera usair o shell de logon do user remoto. Se você tiview access de raiz ao server, você pode alterair a input no file passwd:

    : blah: blah: user_name: blah: / path / to / shell

    Ou apenas symlink / bin / sh paira isso.

    Eu não acredito que haja alguma maneira de mudair isso do lado do cliente, mas, se houview, você precisairia dizer ao ssh , não ao TRAMP. (Você pode fazer isso através de um file ssh_config.)

    Edit: Eu estou corrigido.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.