Eu estraguei meu zshrc em um servidor remoto e agora não consigo executar nenhum comando!

5

Em um computador remoto, alterei minhas configurações de zsh e agora está corrompido.
para cada keypress diz: "url-quote-magic: 1: url-quote-magic: arquivo de definição de função não encontrado"

Eu não tenho outra conta nessa máquina, o que posso fazer para desativar o .zshrc defeituoso para que eu possa usar meu shell novamente e corrigi-lo.

    
por Ali 01.02.2012 / 19:23

6 respostas

13

Você pode executar um comando no servidor remoto sem fazer login assim:

ssh -lUSERNAME SERVER COMMAND

por exemplo,

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

O comando dado como último argumento para ssh será executado por um shell não interativo e os comandos de .zshrc são executados apenas por shells interativos (veja zsh manpage , seção sobre arquivos de inicialização e desligamento).

    
por 01.02.2012 / 19:44
4

Eu também pude acessar o servidor e sobrescrever o .zshrc com um arquivo vazio ou com um que funcione!

    
por 01.02.2012 / 20:18
3

Aqui, é fácil porque o arquivo que você confundiu é usado apenas por logins interativos. Se você tivesse bagunçado o ~/.zshenv , ou se o seu login shell fosse bash e você tivesse desfeito ~/.bashrc (estranhamente, o bash lê ~/.bashrc se for um shell de login não interativo e seu pai é rshd ou sshd ), nenhum dos métodos que dependem da execução de um comando de maneira não interativa funcionaria.

O SSH insiste em executar um shell. Se você não tem outra maneira de logar (via outra conta ou através de um método diferente de ssh), então seu único recurso é pressionar Ctrl + C muito rápido depois de você são autenticados e antes que o shell atinja a linha problemática. Na prática, isso geralmente pode ser feito manualmente; isso pode ajudar a organizar o carregamento pesado da máquina (CPU ou disco). Se você tiver problemas para pressionar as teclas no momento certo, tente usar expect .

    
por 02.02.2012 / 02:15
1

Eu poderia ter alterado meu shell para bash usando:

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

assumindo bash está disponível no servidor e funciona para mim.

    
por 01.02.2012 / 20:21
1

Esta questão acabou de acontecer comigo (d'oh!), e eu liguei o meu editor de texto gui, TextWrangler, para conectar-se ao meu servidor remoto e, em seguida, através do TextWrangler > Abra a partir do servidor FTP / SFTP, fui para .zshrc no meu servidor remoto, consertei o arquivo (editei uma linha PATH incorreta), salvei o arquivo fixo, reiniciei meu terminal e o problema foi resolvido. Olá de novo, Zsh!

BBEdit é outro editor gratuito (mesma empresa, Bare Bones Software, Inc.) que permite acesso para arquivos em servidores remotos (o TextWrangler ainda está disponível, mas foi desativado).

    
por 28.10.2017 / 00:02
0

Eu tentei editar remotamente com o vim:

vim sftp://user@server/.zshrc

que não funcionou. Embora :Nread sftp://server/.zshrc pudesse carregar o arquivo .zshrc quebrado e :Nwrite pudesse escrevê-lo de volta (eu tenho minha chave pública no servidor e ssh sem uma senha).

Ainda mais soluções são muito bem vindas.

    
por 01.02.2012 / 20:10

Tags