
Quando faço login no aplicativo Terminal no OSX, meu shell padrão é /bin/bash
. Digitar echo $HISTFILE
aponta /Users/monkeybrain/.bash_history
e head $(echo $HISTFILE)
mostra que o arquivo contém entradas do histórico.
Se eu digitar zsh
para mudar de shell, algumas coisas estranhas acontecem. Em primeiro lugar, mesmo que meu prompt mude (parece que estou no novo shell), minha $SHELL
variável de ambiente ainda aponta para /bin/bash
. A $HISTFILE
variável agora está vazia e não existe um arquivo como ~/.zsh_history
. Além disso, não consigo usar Ctrl-A
ou Ctrl-E
navegar pela linha de comando.
O que está acontecendo aqui?
Muito obrigado,
MB
Responder1
A
SHELL
variável de ambiente geralmente não é modificada pelo shell. Geralmente contém o caminho completo para o shell de login do usuário atual,nãoo shell atualmente em execução. Na maioria dos casos,SHELL
deve ser definido antes do início do shell.zsh
não altera o valor deSHELL
ebash
o configura de volta para o shell de login seSHELL
não tiver sido definido.Por padrão,
HISTFILE
não está definido emzsh
. 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
valores inteiros positivos para saberzsh
quantas linhas salvar no arquivoHISTFILE
, o padrão é0
(ObrigadoCérebro de Macacopara a dica). Você provavelmente também deseja aumentarHISTSIZE
, que indica quantas linhas de histórico estão disponíveis na sessão do shell. Seu padrão é apenas30
. Por exemplo:HISTSIZE=2000 SAVEHIST=2000
Isso geralmente é feito no
~/.zshrc
arquivo de configuração.zsh
tenta adivinhar suas preferências de vinculação de teclas verificando as variáveis de ambienteEDITOR
e .VISUAL
Se algum deles contiver a string "vi"zsh
usará oviins
modo de entrada. Nem Ctrl+ Anem Ctrl+ Eestão vinculados por padrão a este modo. Se você quiser usar oemacs
modo de entrada (o padrão embash
), você só precisa executarbindkey -e
Isto também pode ser feito em
~/.zshrc
Resumindo, 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.