我弄乱了远程服务器上的 zshrc,现在我无法运行任何命令!

我弄乱了远程服务器上的 zshrc,现在我无法运行任何命令!

在远程计算机上,我更改了zsh设置,但它现在已损坏,
每次按键时都会显示:“url-quote-magic:1:url-quote-magic:找不到函数定义文件”

我在那台机器上没有其他帐户,我可以做什么来禁用故障,.zshrc以便我可以再次使用我的 shell 并修复它。

答案1

您可以在不登录的情况下在远程服务器上运行命令,如下所示:

ssh -lUSERNAME SERVER COMMAND

例如

ssh -lsomeuser someserver 'mv .zshrc .zshrc.bak'

作为最后一个参数给出的命令ssh将由非交互式 shell 执行,而来自的命令.zshrc仅由交互式 shell 执行(请参阅zsh联机帮助页,有关启动和关闭文件的部分)。

答案2

我还可以 sftp 到服务器并.zshrc用空文件或可用的文件覆盖!

答案3

在这里,这很容易,因为你弄乱的文件仅由交互式登录使用。如果你搞砸了~/.zshenv,或者如果你的登录 shell 是 bash 并且你搞砸了~/.bashrc(奇怪的是,bash 读取~/.bashrc它是否是非交互式登录 shell 并且其父级是rshdor sshd),则没有任何方法依赖于执行命令非交互式的就可以了。

SSH 坚持运行 shell。如果您没有其他方式登录(通过另一个帐户或通过 ssh 以外的方法),那么您唯一的办法就是在通过身份验证后、shell 到达有问题的行之前快速按Ctrl+ 。C在实践中,这通常可以手动完成;它可能有助于安排机器重负载(CPU 或磁盘)。如果您在正确的时间按键时遇到困难,请尝试使用expect

答案4

我可以将我的 shell 更改为bash使用:

ssh -luser server 'chsh -s /bin/bash'  

假设 bash 在服务器上可用并且它对我有用。

相关内容