Como desabilitar “auto cd” em zsh com oh-my-zsh

22

Pesquisando isso, não apareceu nenhum resultado. Aqui está o que quero dizer: Eu tenho um arquivo binário chamado x no meu caminho (não a pasta atual, mas é no PATH ), e também uma pasta com o mesmo nome no diretório de trabalho atual. Se eu digitar x , quero que o binário seja executado, mas, em vez disso, ele está na pasta. Como faço para corrigir isso?

    
por Gabi Purcaru 27.04.2014 / 08:27

1 resposta

32

Isso é três perguntas em um; -)

Opção AUTO_CD e como encontrá-lo

Em primeiro lugar, a opção que você está procurando é AUTO_CD. Você pode encontrá-lo facilmente procurando man zshoptions . Use sua função de busca de pagers, normalmente você pressiona / e insere a palavra-chave. Com n você pula para a próxima ocorrência. Isso trará o seguinte:

[..]
   Changing Directories
       AUTO_CD (-J)
              If  a  command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory.
[..]

A opção pode ser desativada usando unsetopt AUTO_CD .

Desligando corretamente

Você está usando o oh-my-zsh, que é descrito como

"A community-driven framework for managing your zsh configuration" Includes 120+ optional plugins (rails, git, OSX, hub, capistrano, brew, ant, macports, etc), ...

Então, o próximo passo é descobrir como ativar / desativar opções de acordo com a estrutura.

O arquivo readme.textile indica que a maneira preferida de ativar / desativar plugins seria uma entrada no seu .zshrc: plugins=(git osx ruby) Descubra qual plugin usa a opção AUTO_CD. Conforme descoberto a partir da manpage, ele pode ser chamado através da chave -J ou AUTO_CD. Como o oh-my-zsh está disponível no github, procurar por ele irá mostrar o arquivo lib/theme-and-appearance.zsh . Se você não quiser desabilitar todo o plugin "theme-and-appearance", coloque um unsetopt AUTO_CD em seu .zshrc. Não modifique os arquivos do oh-my-zsh diretamente, porque no caso de você estar atualizando o framework, suas alterações serão perdidas.

Por que executáveis não são invocados diretamente

Sua terceira pergunta é como executar um binário diretamente: Você precisa executar seu arquivo binário por meio de um caminho, por exemplo, com um ./ prefixado como em ./do-something . Este é um tipo de recurso de segurança e não deve ser alterado. Basta ligar o pen drive USB, montá-lo e dar uma olhada nele com ls . Se houver um executável chamado ls , que exclui seu diretório pessoal, tudo desapareceria, pois isso teria sobrescrito a ordem do seu $ PATH.

Se você tiver comandos que chama repetidamente, configurar um alias no seu .zshrc seria uma solução comum.

    
por 27.04.2014 / 11:55