Joh*_*ohn 9 windows emacs powershell plink tramp
首先我启动eshell,然后输入命令 cd /plink:<user>@<host>:/home/
然后我收到此错误消息
Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation.版权所有.
管理员已禁用命令提示符.
按任意键继续 ...
我正在尝试连接plink(在我的路径中),也是在通过*Messages*缓冲区后我找到了这个.
找不到本地shell提示符(C:\ Windows\system32\cmd.exe)
我90%肯定这是因为我的机器上已禁用cmd,因为当我在另一台计算机上尝试相同的设置时,我知道cmd已启用,一切正常.
我修改了我的.emacs文件
(require 'tramp)
(set 'tramp-encoding-shell "C:/Windows/System32/WindowsPowershell/v1.0/powershell.exe")
(set 'tramp-encoding-command-switch "-Command")
Run Code Online (Sandbox Code Playgroud)
我得到了不同的结果,但结果似乎是乱糟糟的(第三行看起来可能是一个提示,\而且>字符在正确的位置......).

我设法挖掘了一个很好的描述是什么tramp-encoding-shell,还有一个相关的SO问题,这里是github上的tramp-encoding-shell 源/文档.
更新
这是我的屏幕在尝试以PowerShell设置为tramp-encoding-shell的plink连接失败后的样子.

所以我不知道 TRAMP,但你得到的解释是 Windows PowerShell 向你发送回 unicode (UTF16),每个字符都是 16 位,在本例中是字母和零,加上行尾是回车符 /换行(0xa、Oxd)。
\n\n现在,根据TRAMP 文档@Michael Albinus 的建议,“emacs 无法找到 PowerShell 的本地 shell 提示”错误似乎很有希望。
\n\n6.4.2 在远程主机上运行shell
\n\n在与远程主机相关的缓冲区中调用 Mx shell 会运行本地 shell,如 中所定义shell-file-name。这也可能是要在远程主机上应用的 shell 的有效文件名,但至少当本地和远程主机属于不同的系统类型时(例如 \xe2\x80\x98windows-nt\xe2\x80),它会失败\x99 和 \xe2\x80\x98gnu/linux\xe2\x80\x99。
您必须将该变量设置explicit-shell-file-name为远程主机上的 shell 文件名,才能在远程主机上启动该 shell。
6.4.6 在 Windows 主机上运行远程进程\n在 winexe 的帮助下,可以在远程 Windows 主机上运行进程。TRAMP 已为进程文件和启动文件进程实现了此功能。
\n\n变量tramp-smb-winexe-program必须包含本地winexe命令的文件名。远程主机上必须安装Powershell V2.0;它用于运行远程进程。
\n\n为了通过 Mx shell 在 Windows 主机上打开远程 shell,您必须设置变量explicit-shell-file-name 和explicit-*-args。例如,如果您想运行 cmd,则必须设置:
\n\n(setq explicit-shell-file-name "cmd"\n explicit-cmd-args \'("/q"))\nRun Code Online (Sandbox Code Playgroud)\n\n如果将 powershell 作为远程 shell 运行,则设置为
\n\n(setq explicit-shell-file-name "powershell"\n explicit-powershell-args \'("-file" "-"))\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |