Я испортил свой zshrc на удаленном сервере, и теперь я не могу выполнить команды!

На удаленной машине я изменил мой zsh настройки и это теперь повреждаются,
для каждого нажатия клавиши это говорит: "url-quote-magic:1: волшебство кавычки URL: функциональный файл определения, не найденный"

У меня нет другой учетной записи на той машине, Что я могу сделать для отключения дефектного .zshrc так, чтобы я мог использовать свою оболочку снова и зафиксировать ее.

5
24.05.2012, 21:59
5 ответов

Можно выполнить команду на удаленном сервере, не входя в систему как это:

ssh -lUSERNAME SERVER COMMAND

например.

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

Команда, данная как последний аргумент ssh будет выполняться неинтерактивной оболочкой и командами от .zshrc только выполняются интерактивными оболочками (см. zsh страница справочника, разделите на запуске и файлах завершения работы).

13
27.01.2020, 20:31
  • 1
    Да, который хорошо работает!Спасибо. Хотя я использую "ключ" к входу в систему, и для меня он похож: ssh servername 'mv .zshrc .zshrc.broken' –  Ali 01.02.2012, 21:12

Я мог также sftp к серверу и перезаписывать .zshrc с пустым файлом или с тем, который работает!

4
27.01.2020, 20:31

Здесь, это легко, потому что файл, который Вы испортили, только используется интерактивными логинами. Если Вы испортили ~/.zshenv, или если Ваша оболочка входа в систему была ударом, и Вы испортили ~/.bashrc (странно, чтения удара ~/.bashrc если это - неинтерактивная оболочка входа в систему, и ее родитель rshd или sshd), ни один из методов, которые полагаются на выполнение команды нев интерактивном режиме, не работал бы.

SSH настаивает на том, чтобы выполнять оболочку. Если у Вас нет никакого другого способа войти в систему (с помощью другой учетной записи или с помощью метода кроме ssh), то Ваше единственное обращение за помощью должно нажать Ctrl+C действительно быстро после того, как Вы аутентифицируетесь и прежде чем оболочка достигнет проблематичной строки. На практике это может часто делаться вручную; это может помочь принять меры, чтобы машина была в большой степени загружена (ЦП или диск). При наличии затруднений при нажатии клавиш в нужное время попытайтесь использовать expect.

3
27.01.2020, 20:31

Я, возможно, изменил свою оболочку на bash использование:

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

принятие удара доступно на разъединении, и это работает на меня.

1
27.01.2020, 20:31

Я пытался сделать удаленное редактирование с энергией:

vim sftp://user@server/.zshrc

который не работал. Хотя :Nread sftp://server/.zshrc мог загрузить поврежденный .zshrc файл и :Nwrite мог записать его обратно (у меня есть свой открытый ключ на сервере и ssh без пароля).

Еще больше решений очень приветствуется.

0
27.01.2020, 20:31

Теги

Похожие вопросы