Linha de Comando: z está instalado mas não consegue encontrar o comando

1

Eu instalei recentemente o iTerm2 e o ZSH (com o meu-meu-zsh) depois de alguns meses de uso muito leve do Terminal de estoque no Mac OS.

Eu ouvi falar de uma ferramenta chamada "z" e instalei via brew com brew install z . Eu usei por uma noite sem problemas. Mais tarde, parou de funcionar, dizendo zsh: command not found: z . Tentei instalá-lo novamente e recebi Warning: z-1.8 already installed .

Como isso faz sentido? Está instalado, mas o comando não foi encontrado? Como eu poderia restaurar essa funcionalidade?

Obrigado!

    
por Fabio Bracht 11.11.2015 / 00:45

2 respostas

6

Pode-se inspecionar a lista de arquivos instalados por uma fórmula Homebrew via brew list -f <formula_name> . Neste caso, a saída deve gostar

> brew list -f z
/usr/local/Cellar/z/1.9/etc/profile.d/z.sh
/usr/local/Cellar/z/1.9/INSTALL_RECEIPT.json
/usr/local/Cellar/z/1.9/README
/usr/local/Cellar/z/1.9/share/man/man1/z.1

Observe que, nesse caso, não há comando (nem mesmo bin ), apenas um z.sh . Isso faz sentido porque z é uma ferramenta shell e precisa ser originada no shell como funções para obter e definir o ambiente do shell; Executar como um comando externo simplesmente não oferece integração profunda o suficiente. Portanto, você precisa fornecer z.sh em seu shell, provavelmente em .bash_profile , .bashrc ou .zshrc .

Normalmente, fórmulas Homebrew que exigem interações pós-instalação para serem utilizáveis terão instruções listadas em advertências, que serão exibidas após a instalação ou recuperadas manualmente por brew info <formula_name> . Neste caso,

> brew info z
<irrelevant info omitted>
==> Caveats
For Bash or Zsh, put something like this in your $HOME/.bashrc or $HOME/.zshrc:
  . 'brew --prefix'/etc/profile.d/z.sh

É claro que você deve seguir esse conselho com um pouco de sal e usar uma sintaxe de shell mais moderna e legível:

source "$(brew --prefix)/etc/profile.d/z.sh"

Ou

source /usr/local/etc/profile.d/z.sh

se você souber que sua instalação do Homebrew está em /usr/local .

    
por 11.11.2015 / 02:02
0

Acredito que o Brew instale as coisas em /usr/local/bin em vez de /usr/bin para evitar a necessidade de privilégios de root. Muitas vezes isso precisa ser adicionado ao seu $PATH (os diretórios padrão para procurar por aplicativos e scripts) - especialmente se você mudou de shells. Uma vez adicionado, você deve ter acesso a todos os comandos instalados pelo Brew novamente.

    
por 11.11.2015 / 00:55