não consegue encontrar o histórico do zsh no OSX 10.8.5

1

Quando eu faço o login no aplicativo Terminal no OSX, meu shell padrão é /bin/bash . Digitar echo $HISTFILE me aponta para /Users/monkeybrain/.bash_history e head $(echo $HISTFILE) mostra que o arquivo contém entradas de histórico.

Se eu digito zsh para trocar o shell, algumas coisas estranhas acontecem. Em primeiro lugar, mesmo que o meu prompt mude (por isso, parece que estou no novo shell), minha variável de ambiente $SHELL ainda aponta para /bin/bash . A variável $HISTFILE está agora vazia e não existe tal arquivo como ~/.zsh_history . Além disso, não posso usar Ctrl-A ou Ctrl-E para percorrer a linha de comando.

O que está acontecendo aqui?

Muito obrigado,

MB

    
por Monkeybrain 15.04.2016 / 11:43

1 resposta

0
  • A variável de ambiente SHELL geralmente não é modificada pelo shell. Ele geralmente contém o caminho completo para o shell de login do usuário atual, não o shell atualmente em execução. Na maioria dos casos, SHELL deve ser definido antes de um shell ser iniciado. zsh não altera o valor de SHELL e bash configura de volta para o shell de login se SHELL não foi definido.

  • Por padrão, HISTFILE não está definido em zsh . Se você quiser salvar o histórico, você deve configurá-lo para o arquivo que deseja usar para isso:

    HISTFILE="${HOME}/.zsh_history"
    

    Você também precisa definir SAVEHIST para valores inteiros positivos para informar zsh quantas linhas salvar no HISTFILE , o padrão é 0 (Agradecimentos Monkeybrain para a dica). Você provavelmente também deseja aumentar HISTSIZE , o que denota quantas linhas de histórico estão disponíveis na sessão do shell. Seu padrão é apenas 30 . Por exemplo:

    HISTSIZE=2000
    SAVEHIST=2000
    

    Isso geralmente é feito no arquivo de configuração ~/.zshrc .

  • zsh tenta adivinhar suas principais preferências de vinculação, verificando as variáveis de ambiente EDITOR e VISUAL . Se um dos dois contiver a string "vi" zsh utilizará o modo de entrada viins . Nem o Ctrl + A nem o Ctrl + E são por padrão ligados neste modo. Se você quiser usar o modo de entrada emacs (o padrão em bash ), basta executar

    bindkey -e
    

    Isso também pode ser feito em ~/.zshrc

Em suma, parece que você está executando zsh com a configuração padrão. Se ainda não houver ~/.zshrc , basta criá-lo e adicionar as configurações necessárias.

    
por 15.04.2016 / 12:49