Não é possível executar /usr/local/bin/fish: Arquivo ou diretório não encontrado

Não é possível executar /usr/local/bin/fish: Arquivo ou diretório não encontrado

Para começar, sou novo em tudo isso e ainda estou aprendendo, então, por favor, fale comigo quando se trata de terminologia e localização de coisas.

Configurar: Ambiente Virtual Proxmox 7.2-3 + Container + ubuntu-22.04-standard_22.04-1_amd64.tar.zst

Emitir: Para o terminal/console do meu servidor Ubuntu, instalei o fisher e o fish shell ontem apenas para mudar a aparência. Quando tentei reiniciar o contêiner, recebi um problema de login que parecia estar relacionado à localização dos peixes que coloquei no diretório. Embora eu não esteja totalmente certo.

Não sei como fazer login novamente no contêiner e prefiro não ter que começar do zero configurando tudo novamente. Eu ficaria grato por qualquer ajuda.

Mais informações e imagens de fundo:

Responder1

Primeiro, a boa notícia: é quase certo que há uma maneira de se recuperar. A má notícia é que não sei exatamente como fazer isso neste caso. Farei algumas sugestões abaixo sobre o que acho que funcionará, mas não executo o Proxmox, então não posso testar diretamente.

Mas antes vou fazer uma sugestão:

  • Ao instalar o software, use odocumentos oficiaisprimeiro, em vez de um site "técnico" como o mencionado acima.

O artigo ao qual você vinculou acima ésimplesmente errado e resultará (resultou) em corrupção do sistema. O processo correto é documentado pela equipe Fish em:

Com desculpas, um pouco de discurso retórico - sites como aquele ao qual você vinculou são "sites de conteúdo pago". Eles pagam por artigos de escritores “freelance” (embora “avaliados”). Infelizmente, o conteúdo pode variar muito em qualidade. Para dar o pior exemplo que já vi, no ano passado um novo visitante entrou em um subreddit que frequento sobre um tópico técnico. A pessoa escreveu (parafraseando, mas com precisão):

Não tenho conhecimento de [tópico] e nunca o usei, mas me pediram para escrever um artigo sobre como fazer [xyz] com [tópico]. Alguém pode me dar alguma orientação?

Observe que eu não seiqualsite para o qual estavam escrevendo.

É claro que nem todo artigo em todo site de conteúdo pago é assim, mas o artigo ao qual você se refere acimaéruim. Qualquer documentação que corrompa absolutamente, sem perguntas, o seu sistema éruim. O principal problema está em:

A etapa 4 ("Tornar a casca do peixe como casca padrão") nesse documento diz:

sudo chsh -s /usr/local/bin/fish

São apenas vários erros reunidos em um!

  • Primeiro e pior – esse é o caminho incorreto para o Fish no Ubuntu. Acredito que seja aí que o Fish seria instalado no macOS. No Ubuntu, é (normalmente) /usr/bin/fish, mas como os documentos do Fish apontam, você deve sempre confirmar a localização emseusistema.

  • Ao usar sudo chshsem um nome de usuário, ele altera o shell do usuário root. Isso é ruim e torna a recuperação muito mais difícil.

    Se você quisesse alterar o shell do usuário atual usando sudo, a sintaxe seria:

    sudo chsh -s <path/to/shell> $USER
    
  • Mas mesmo isso é uma má ideia, pois chsho usuário root (também conhecido como sudo chsh) permitirá que você defina um caminho de "shell inválido". Ele irá avisá-lo, mas ainda mudará /etc/passwdpara usar o caminho de shell incorreto que você instruiu.

    sudo chsh -s /this/is/bad $USER
    grep $USER /etc/passwd
    

    Você verá que o caminho errado está definido.

    Observação lateral: posso experimentar essas coisas em meu sistema sem medo de corrupção, pois estou usando o Windows Subsystem para Linux, um ambiente virtual onde sei que posso recuperar facilmente qualquer um desses erros. Os contêineres Proxmox devem, na verdade, ser muito semelhantes à tecnologia que o WSL usa "nos bastidores", então presumo que haja um mecanismo de recuperação igualmente fácil.

OcorretoO comando para alterar seu shell para Fish no Ubuntu é simplesmente:

chsh -s /usr/bin/fish

Contanto que você não use sudo, isso mudaráseushell do usuário, e ele irávalidarque a casca é boa.


Plano de recuperacao

Você mencionou que está usando o Ubuntu como contêiner no Proxmox. Isso é bom, eu acredito. Se você estivesse usando uma VM, precisaria inicializar o Ubuntu no Proxmox usando um shell válido. Isso ainda seria possível.

Novamente, a má notícia aqui é que não tenho certeza de como fazer isso e, como o Proxmox não funcionasobUbuntu, você pode precisar de um site diferente (como os fóruns do Proxmox) para responder a isso. Em geral, você precisará:

  • Acesse a linha de comando do Proxmox.

  • Presumo, pelo documento do Proxmox, que você precisará usar opctferramenta para gerenciar o contêiner.

  • Acesse o contêiner do Ubuntu com um shell válido. Você pode tentar pct exec <vmid> /usr/bin/bash.

  • Você precisará estar rootdentro do contêiner do Ubuntu, que acredito ser o padrão para o pct.

Uma vez que vocêteracesso ao contêiner do Ubuntu em um shell válido, como root:

  • chsh -s /usr/bin/bash

    Há uma chance de que isso não funcione, pois o shell do usuário atual é inválido. No entanto, acredito que o root ainda será capaz de redefinir o shell (um usuário normal definitivamente não o faria). No entanto, se você tiver problemas, a outra alternativa é:

    vipw
    

    Isso permitirá que você edite seu arquivo /etc/passwddiretamente e altere /usr/local/bin/fishpara /usr/bin/bash.

    Isso irá redefinir o shell do seu usuário root para um bom. Para root, eu recomendaria deixar o shell como Bash. Mude seu shell para Fish para seu usuário normal e não root, conforme descrito na documentação do Fish.

informação relacionada