emacsのtrampでリモートシェルを直接開く


5

私はemacsのリモートマシンで私のシェルを実行するための最良の方法はTRAMP( ssh ローカルシェルでコマンドを実行しても私のニーズには合いません。しかし、最初にリモートファイルにアクセスした場合にのみ、TRAMPシェルを実行する方法がわかります。 C-x C-f それから M-x shell そのバッファから。しかし、私はTRAMPを使ってリモートマシンでシェルを開きたいのですが、 そのリモートホスト上の任意のファイルを開くが、私の検索でそれを行う方法についての説明を見つけることができません。それは可能ですか?


それがあなたが何を求めているのかについてのいくつかの追加の説明を追加してください。明らかに、シェルバッファからリモートマシンにSSHで接続する方法を知りたいだけの方が進んでいるのですが、それがあなたの質問が読者を導く方向です。そのため、シェルバッファを開いてリモートマシンに自動的にSSH接続する機能を使用する必要がありますか。そのため、リモートサーバのプロンプトとパスにアクセスできますか?または、シェルモードのバッファを既に開いていて、その後自動ログインコマンドを押すだけですか?使いますか sshpass?毎回パスワードを入力しますか?
lawlist

@lawlistさん、ありがとうございます。私はそれがより明確であることを期待して質問を言い換えた。あなたの質問に答えるには:私が指定したマシンでtrampにリモートシェルバッファを開かせる方法をいくつか欲しい。予想される動作は、これを行おうとしたときにemacsが私のパスワードを要求することです。
jmlorenzi

回答:


4

default-directoryがremoteのときは、Trampが効果を発揮します。そのため、事前にリモートファイル(またはディレクトリ)を開くのと同じように変更することができます。

しかし、あなたはこのような小さなコマンドを書くことができます:

(defun my-shell () (interactive) (let ((default-directory "/ssh:user@host:")) (shell)))

それからあなたは呼び出すことができます M-x my-shell


1
emacsがWindows上で動作していて、Linuxホストにログインしたい場合は、次のように設定します。 M-x customize-variable explicit-shell-file-name\bin\bash 行方不明のシェルエラーを避けるため。
kwarnke

2

私が使う 監督 リモートマシンにアクセスしてそこでシェルを開く。

これは私が使っている関数です。 Tikhon Jelvissのemacs設定

(defun anr-shell (buffer)
  "Opens a new shell buffer where the given buffer is located."
  (interactive "sBuffer: ")
  (pop-to-buffer (concat "*" buffer "*"))
  (unless (eq major-mode 'shell-mode)
    (dired buffer)
    (shell buffer)
    (sleep-for 0 200)
    (delete-region (point-min) (point-max))
    (comint-simple-send (get-buffer-process (current-buffer)) 
                        (concat "export PS1=\"\033[33m" buffer "\033[0m:\033[35m\\W\033[0m>\""))))

例:

(anr-shell "/vagrant@localhost#2222:/vagrant/")

実際の答えへのリンクはリンクの腐敗を避けるために推奨されていないので、ここで答えを再投稿してください
Jarmund

答えが再投稿されました。
mandark

それに応じて投票が変わりました。
Jarmund

0

マニュアルではあまり明確にされていないが C-u M-x shell シェルバッファの名前を指定できます。 そして あなたのケースでより重要なのはあなたが指定することができます Default directoryTrampのように文字列を取ることができる /ssh:server:/my/path

代替案はdiredを開くことです( C-x d 実際のファイルではなく M-x shell ディレクトリから、シェルはdiredディレクトリのコンテキストで開きます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.