comandos não encontrados no zsh


138

Estou usando o z Shell ( zsh) em vez do bash padrão, e algo errado acontece para que todos os comandos que costumavam trabalhar não sejam mais reconhecidos:

ls
zsh: command not found: ls

open -e .zshrc
zsh: correct 'open' to '_open' [nyae]? 

Não sei como redefinir zshou corrigir isso. Aqui está o conteúdo da $PATHvariável:

echo $PATH
/Users/Malloc/bin/Sencha/Cmd/3.1.2.342:/usr/local/bin/mate

Não consigo abrir o .bash_profilearquivo nem o .zshrcarquivo, parece que a única solução é redefinir o arquivo zsh. Alguma ideia?

EDITAR:

Eu até tentei redefinir zshcomo indicado neste tópico , mas sempre recebia command not founderro:

exec zsh
zsh: command not found: zsh

então o que está acontecendo? por que todos os comandos estão perdidos?

Respostas:


218

É evidente que você conseguiu atrapalhar sua PATHvariável. (Sua corrente PATHnão contém nenhum local onde estão localizados utilitários comuns.)

Experimentar:

PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
export PATH

Como alternativa, para "redefinir" o zsh, especifique o caminho completo para o shell:

exec /bin/zsh

ou

exec /usr/bin/zsh

17
Quando atualizei para o Catalina, mudei para o shell zsh e ele atrapalhou meus caminhos até o ponto em que não conseguia executar nenhum aplicativo de terceiros que eu usasse. Eu apenas tive que modificar o arquivo .zshrc e adicionar "export PATH = << localização dos meus compartimentos >>" e fiz o exec / bin / zsh e tudo estava bem.
Robert Walters

18

No seu arquivo de configuração ~ / .zsh, inclua o caminho para o arquivo do caminho do bash que contém seus aliases. No meu caso, estava incluindo a linha "source ~ / .bash_profile" dentro de ~ / .zsh.


1
Muito obrigado, isso resolveu para mim. Eu tive o problema depois de atualizar para o Catalina e mudei para o zsh shell.
neiya

1
Eu não tenho um ~/.zsharquivo. Em vez disso, tive que colocá-lo /etc/zshrc.
Chase Roberts

14
  1. Use um bom editor de texto como o VS Code e abra seu .zshrcarquivo (deve estar no seu diretório pessoal. Se você não o vir, clique com o botão direito do mouse na pasta ao abrir e escolha a opção 'mostrar arquivos ocultos') .

  2. encontre onde afirma: export PATH=a-bunch-of-paths-separated-by-colons:

  3. insira isso no final da linha, antes da citação final: :$HOME/.local/bin

E deve funcionar para você.

Você pode testar se isso funcionará primeiro digitando-o no seu terminal: export PATH=$HOME/.local/bin:$PATH

Se o erro desaparecer após você digitar isso no terminal e seu terminal funcionar normalmente, a solução acima funcionará. Caso contrário, você terá que encontrar a pasta onde está localizado o erro de referência (a coisa não encontrada) e substituir o CAMINHO acima pelo CAMINHO PARA A PASTA.


Ah, aí está o meu erro, que levou o zsh a aparentemente "ignorar" minha PATHconfiguração. No bash, eu estava acostumado a prefixar diretórios dentro da minha pasta pessoal com ~. Então, para o zsh, eu deveria estar usando a $HOMEvariável, como no seu exemplo.
lalilulelost 13/04

7

Você pode criar um link simbólico em / usr / local / bin /

sudo ln -s $HOME/.composer/vendor/bin/homestead /usr/local/bin/homestead

Muito obrigado. Eu estava com problemas e essa resposta me fez perceber que não estava usando $HOMEe fornecendo um caminho relativo. Usando o caminho completo com $HOMEcorrigido o meu problema.
tasomaniac

+1 para muitos casos de uso simples: adicionar um link simbólico é o caminho a percorrer se você deseja adicionar um executável. Se você deseja gerenciar vários executáveis ​​em uma nova pasta, a inclusão de itens $PATHé melhor nesse caso de uso.
David Bodow


4

Corrigi o problema abrindo a guia geral de preferências do terminal e alterando o comando (caminho completo) /bin/bashpara o padrão e editando o ~/.zshrcarquivo.

insira a descrição da imagem aqui

export PATH="all your path inside the quotes"

... sem nenhum espaço em branco entre PATH="e salve o arquivo.

insira a descrição da imagem aqui

Depois de salvar o arquivo, altere o /bin/zshcomando ou selecione padrão insira a descrição da imagem aqui

... e reinicie o terminal e você deve ter seu shell zsh funcionando novamente!


4

Se você gosta de mim, terá dois aplicativos de terminal, um é o terminal padrão com bash como shell padrão e outro iTerm 2 com zsh como shell. Para ter os comandos e o zsh no iTerm 2 a partir do bash, faça o seguinte:

No iTerm 2, vá para preferências (ou comando). Em seguida, vá para a guia perfil e desça para o comando . Como você pode ver na figura abaixo, você precisa selecionar a opção de comando e colar o caminho do zsh shell (para encontrar o caminho, é possível which zsh).

insira a descrição da imagem aqui

Nesse ponto, você terá o zsh como seu shell padrão SOMENTE para o iTerm 2 e o bash como o shell padrão global no aplicativo de terminal Mac padrão. Em seguida, ainda estamos perdendo os comandos do bash no zsh. Portanto, para fazer isso, você precisa ir ao seu bash (onde seus comandos estão funcionando) e obter a variável PATH do env (use este comando para fazer isso env | grep PATH:).

Depois disso, acesse o iTerm 2 e cole o seu caminho na opção "enviar texto no início".

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin && clear

Basta reabrir o iTerm 2 e pronto!


A razão pela qual adicionamos a exportação ao "Enviar texto no início" é que, por alguém que me chamou a atenção, o caminho sempre é redefinido para o que era antes, sempre que eu reabria o iTerm 2. Portanto, essa é uma boa maneira de corrigi-lo.
Kamil B

3

Minha solução:

Mude novamente para bash:

source .bashrc

Próximo:

echo $PATH

copie isso:

/home/frank/.asdf/shims:/home/frank/....

voltar para zsh:

source .zsh

aberto .zshrc:

e cole:

 export PATH=/home/frank/.asdf/shims:/home/frank/....

reiniciar o terminal


1

No meu caso, foi por engano que o código comentado não foi comentado na primeira linha.

# If you come from bash you might have to change your $PATH.

O hash foi removido. Depois de adicioná-lo, funcionou bem.

Acabei de publicar isso aqui para que alguém possa achar isso útil. Porque é apenas o começo da linha e pode ser excluído por engano, como eu havia feito. E parece que não há solução depois de tentar várias maneiras.


1

A melhor solução funciona para mim no caminho permanente da mudança

Abra o Finder-> vá para a pasta / Users / / usr / local / bin

abra .zshrc com TextEdit

.zshrc é um arquivo oculto, portanto, oculte-o pelo comando + shift +. pressione

excluir conteúdo e tipo de arquivo

exportar PATH = ~ / usr / bin: / bin: / usr / sbin: / sbin: $ PATH

e salve

agora

zsh: comando não encontrado



0

Como já foi dito, basta reiniciar o terminal depois de fazer as alterações e redefinir as alterações feitas no seu arquivo ~ / .zshrc. Por exemplo, após adicionar a função para abrir o visual studio:

function code {  
    if [[ $# = 0 ]]
    then
        open -a "Visual Studio Code"
    else
        local argPath="$1"
        [[ $1 = /* ]] && argPath="$1" || argPath="$PWD/${1#./}"
        open -a "Visual Studio Code" "$argPath"
    fi
}

Consegui usar o código da palavra-chave para abrir o programa na linha de comando.


0

Uma maneira de editar o arquivo .zshrc sem fazê-lo através do iTerm2 ou do terminal nativo no macOS é usar um terminal em outro aplicativo. Por exemplo, usei o terminal como parte do VSCode e consegui encontrar e editar o arquivo.


-1

Desinstale e reinstale o zsh funcionou para mim:

sudo yum remove zsh
sudo yum install -y zsh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.