我想我搞砸了一些事情,因为这里没有人有类似的问题。当我通过 SSH 连接到 Windows 笔记本电脑时,默认情况下它不会提供 UNIX shell,而是直接让我进入 Windows 提示符。然后我必须输入 bash,然后输入 cd,然后我就可以运行我需要的命令。
这是 Windows 设置问题还是 openssh 问题?有人对如何避免每次登录时都需要输入这些命令有任何建议吗?
Windows SSH 守护进程是 openssh,默认情况下它设置为使用 cmd 作为 shell,但您可以编辑配置以使用 powershell、bash 或任何其他第三方 shell。请按照此链接中的信息进行操作。
MS PoweShell 文档中给出的内容应该经过。
要设置默认命令 shell,首先确认 OpenSSH 安装文件夹位于系统路径上。对于 Windows,默认安装文件夹为 SystemDrive:WindowsDirectory\System32\openssh。
配置默认 ssh shell 是在 Windows 注册表中通过将 shell 可执行文件的完整路径添加到字符串值 DefaultShell 中的 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH 来完成的。
这是示例,以下 Powershell 命令将默认 shell 设置为 PowerShell.exe:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
欲了解更多说明,请参阅this链接。
简而言之,将以下命令之一粘贴到elevated Powershell 提示符中(右键单击,以管理员身份运行):
Bash
设置为默认 shell(安装 Git Bash 后有效)New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\bin\bash.exe" -PropertyType String -Force
这样,您就不再专门处于 WSL 中,但您拥有 Bash shell。
基于 Drunken Code Monkey 的回答 以及来自 this 答案 到 SuperUser 上的类似问题。