首先我启动eshell,然后输入命令cd /plink:<user>@<host>:/home/
然后我收到此错误消息
Microsoft Windows [Version 6.1.7601]版权所有(c)2009 Microsoft 公司。保留所有权利。
管理员已禁用命令提示符。
按任意键继续。 。
我正在尝试连接plink(在我的路径中),也是在经过我发现的* Messages *缓冲区之后。
无法找到(C:\ Windows \ system32 \ cmd.exe)的本地shell提示符
我90%确定这是因为我的计算机上已禁用cmd,因为当我在另一台计算机上尝试相同的设置时,我知道cmd已启用,一切正常。
我已将.emacs
文件修改为
(require 'tramp)
(set 'tramp-encoding-shell "C:/Windows/System32/WindowsPowershell/v1.0/powershell.exe")
(set 'tramp-encoding-command-switch "-Command")
我得到了不同的结果,但结果似乎是乱糟糟的(第三行看起来可能是提示,\
和>
字符位于正确的位置......)
我设法挖掘了tramp-encoding-shell
的{{3}}非常好的description,还有一个相关的SO question,这里是tramp-encoding-shell
{{ 3}}在github上。
更新
尝试以PowerShell设置为tramp-encoding-shell的plink连接失败后,我的屏幕显示的是。
答案 0 :(得分:2)
所以我不知道TRAMP,但你得到的解释是Windows PowerShell发回你的unicode(UTF16),每个字符都是16位,在这种情况下字母为零,加上End Of Line的事实是回车/换行(0xa,Oxd)。
现在对于&#34; emacs找不到PowerShell的本地shell提示符&#34; 错误根据TRAMP documentation @Michael Albinus 建议似乎是有前途的。
6.4.2在远程主机上运行shell
在与远程主机相关的缓冲区中调用M-x shell将运行shell-file-name
中定义的本地shell。这可能也是要在远程主机上应用的shell的有效文件名,但至少当本地和远程主机属于不同的系统类型(如“windows-nt”和“gnu / linux”)时,它将失败。
您必须将变量explicit-shell-file-name
设置为远程主机上的shell文件名,以便在远程主机上启动该shell。
6.4.6在Windows主机上运行远程进程 在winexe的帮助下,可以在远程Windows主机上运行流程。 TRAMP已经为进程文件和启动文件进程实现了这一功能。
变量tramp-smb-winexe-program必须包含本地winexe命令的文件名。在远程主机上,必须安装Powershell V2.0;它用于运行远程进程。
要通过M-x shell在Windows主机上打开远程shell,必须设置变量explicit-shell-file-name和explicit - * - args。例如,如果要运行cmd,则必须设置:
(setq explicit-shell-file-name "cmd"
explicit-cmd-args '("/q"))
如果将PowerShell作为远程shell运行,则设置为
(setq explicit-shell-file-name "powershell"
explicit-powershell-args '("-file" "-"))