![我弄乱了远程服务器上的 zshrc,现在我无法运行任何命令!](https://linux22.com/image/20668/%E6%88%91%E5%BC%84%E4%B9%B1%E4%BA%86%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%20zshrc%EF%BC%8C%E7%8E%B0%E5%9C%A8%E6%88%91%E6%97%A0%E6%B3%95%E8%BF%90%E8%A1%8C%E4%BB%BB%E4%BD%95%E5%91%BD%E4%BB%A4%EF%BC%81.png)
在远程计算机上,我更改了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 并且其父级是rshd
or sshd
),则没有任何方法依赖于执行命令非交互式的就可以了。
SSH 坚持运行 shell。如果您没有其他方式登录(通过另一个帐户或通过 ssh 以外的方法),那么您唯一的办法就是在通过身份验证后、shell 到达有问题的行之前快速按Ctrl+ 。C在实践中,这通常可以手动完成;它可能有助于安排机器重负载(CPU 或磁盘)。如果您在正确的时间按键时遇到困难,请尝试使用expect
。
答案4
我可以将我的 shell 更改为bash
使用:
ssh -luser server 'chsh -s /bin/bash'
假设 bash 在服务器上可用并且它对我有用。