terminal está doente

1

Quando modifico minha variável de caminho, cometi um erro ao digitar um comando source ~/.profile , depois o terminal, quando é aberto sempre, ecoa nada aparecendo como a metade superior da imagem, como a execução de algum programa, e Eu tenho que usar 'ctrl + C' para pará-lo e o terminal irá recuperar e ecoar 'user: path $'. Mesmo eu reiniciando o computador não funciona. Como faço para recuperar meu computador?

Isso é o que acontece quando eu faço bash -x ~/.profile - paste.ubuntu.com/23347084

    
por Zhang 18.10.2016 / 14:39

2 respostas

2

Eu resolvi o problema com base em suas informações.

O que acontece é isto: Bash vai executar .bashrc , que origina .profile . .profile then sources .bashrc , que cria um loop recursivo.

Você pode excluir a linha source .profile do final de seu .bashrc e isso resolverá o problema.

    
por Mark Yisri 19.10.2016 / 12:45
-1

O Bash tem uma boa maneira de combinar e remover picadas de variáveis e matrizes.

Path_to_remove="~/.profile"
PATH=${PATH//:${Path_to_remove}/}

A nota acima presume que você tenha anexado ou anexado à sua variável de caminho, se você já tiver escrito, então pesquisar o arquivo bashrc de seus usuários também pode ajudar.

source ~/.bashrc

Ou use a redefinição para redefinir o terminal atual

reset
  

note acima é muito bom se você tiver ascendido o binário para o seu terminal.

Edições

Com base nos seus comentários, parece que você provavelmente substituiu a variável path.

Da próxima vez, antes de mexer com isso, faça o backup

opção de backup um (para arquivo)

echo "${PATH}" | tee -a /tmp/path.bak

opção de backup dois (temporária)

Old_path="${PATH}"

Em seguida, faça alterações com o conhecimento de que o caminho pode ser restaurado pelos seguintes exemplos

PATH=$(cat /tmp/path.bak)
## or for option two
PATH=${Old_path}

Finalmente, entenda como o caminho separa caminhos para caminhos de diretório diferentes, hint : a dois pontos. E onde a maioria dos softwares instala links executáveis e / ou de sistema; abaixo está uma lista dentro de um dos meus novos sistemas de arquivos chroot.

  • /bin
  • /sbin
  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  

observe que o acima foi formatado por meio do seguinte e não é como o caminho será apresentado se for refletido.

for _path in ${PATH//:/ }; do echo "${_path}"; done

Com o acima, podemos agora trabalhar na reconstrução de sua variável de caminho. Note que não executa o seguinte sem antes fazer o backup de sua variável de caminho atual.

PATH=/bin
## Add further paths using the following syntax
PATH=${PATH}:/sbin
PATH=${PATH}:/usr/bin
PATH=${PATH}:/usr/sbin
PATH=${PATH}:/usr/local/bin
PATH=${PATH}:/usr/local/sbin
  

Observe como acima, todos, exceto o primeiro, usam ${PATH}: para garantir que você não esteja sobrescrevendo, mas anexando ao seu valor preexistente. O mesmo poderia ser alcançado usando += , por exemplo, PATH+=:/sbin , mas fazê-lo dessa maneira é mais propenso a erros, porque se você esquecer o sinal de adição, ele sobrescreverá e, se você esquecer o cólon, o caminho adicionado com o novo como sub-diretórios.

    
por S0AndS0 18.10.2016 / 16:46