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:
Algumas outras notas:
- Qualquer coisa que deva estar disponível para aplicações gráficas OU para sh (ou bash invocado como sh) DEVE estar em ~ / .profile
- ~ / .bashrc não deve produzir nada
- Qualquer coisa que deva estar disponível apenas para shells de login deve entrar em ~ / .profile
- Verifique se ~ / .bash_login não existe.
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:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Isso precisa ser "originado" para que o arquivo seja lido pelo bash na inicialização interativa:
Fornecendo arquivos
Se você possui muitas configurações de shell, pode dividi-las em vários subarquivos e usar a fonte incorporada para carregá-los do seu .bashrc: com adição source ~/.exports
a eles.
Como alternativa, para garantir que os arquivos realmente existam antes do carregamento
if [ -f ~/.exports ]; then
. ~/.exports
fi
O comando . ~/.exports
terá origem ~/.exports
no contexto do shell atualmente em execução.
Isso é particularmente útil para adicionar aliases, pois o arquivo separado facilita recarregá-los quando você faz alterações.
zsh
e ainda mais personalizar o zsh com vários scripts.