Comecei a usar o Mac recentemente e antes de trabalhar no Ubuntu.
Suponha que eu execute esses comandos um por um no meu terminal:
python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
Agora, suponha que eu queira executar python main.py
novamente, então clicarei na tecla para cima. Vou precisar clicar na tecla apenas duas vezes no Ubuntu, mas sete vezes no Mac.
Se dois comandos consecutivos forem iguais, o terminal deve lembrar apenas um comando em vez de lembrar dois comandos diferentes.
Como posso fazer isso acontecer no macOS?
zsh
e ainda mais personalizar o zsh com vários scripts.Respostas:
Você precisa adicionar a variável de ambiente HISTCONTROL ao seu
.bash_profile
. No seu,.bash_profile
adicione a seguinte linha:Feche e reinicie sua sessão do bash e os dupes devem desaparecer. Como alternativa, você pode simplesmente executar a mesma linha e ela entrará em vigor nessa sessão (use-a para testá-la).
Na página
bash
do manual para (no Terminal):fonte
Por que isso acontece?
O MacOS e o Ubuntu são configurados de maneira diferente para lidar com duplicatas no histórico de comandos do bash. Essas configurações são armazenadas em vários chamados " arquivos de ponto ". Estes assumem a forma de ~ / .bash * e também o sistema / etc / profile. Todos esses arquivos podem ser personalizados ao seu gosto e diferenciar entre shells interativos, shells de login, shells remotos etc. Esses arquivos são lidos em uma ordem específica e servem a funções específicas.
Como obter o mesmo comportamento no macOS?
Se você quiser apenas essa, personalização única de "ignorar duplicatas exatas das linhas de comando", você pode incluir algo como a resposta de Allan, ou seja, adicionar uma única linha para, por exemplo, seu arquivo bash_profile. Não existe "o caminho certo", mas inúmeras opções.
Caso essa não seja a única personalização para o seu bash, talvez essa não seja a melhor opção:
Isso significa que, quando as coisas se tornam mais complexas, é boa ideia para espalhar as personalizações em vários arquivos, cada um deles especializado e altamente ordenada em seu conteúdo:
Todos
exports
podem residir em seu próprio arquivo para simplificar a supervisão.Crie um arquivo que é lido pelo bash na raiz do seu diretório de usuário, por exemplo chamado
.exports
que contém:Isso precisa ser "originado" para que o arquivo seja lido pelo bash na inicialização interativa:
Como alternativa, para garantir que os arquivos realmente existam antes do carregamento
O comando
. ~/.exports
terá origem~/.exports
no contexto do shell atualmente em execução.fonte
.exports
lido (fornecido)?HISTCONTROL
estiver definido.bashrc
e~/.bashrc
for originado~/.bash_profile
, não haverá necessidadeexport
daHISTCONTROL
variável. Um shell de login interativo e um shell interativo terão a variável definida.Registrar uniqely todos os novos comandos é complicado. Primeiro você precisa adicionar
~/.profile
ou similar:Então você precisa adicionar a
~/.bash_logout
:fonte