Mengapa ini terjadi?
MacOS dan Ubuntu dikonfigurasi secara berbeda di luar kotak untuk menangani duplikat dalam riwayat perintah bash. Konfigurasi ini disimpan dalam sejumlah yang disebut " dot-file ". Ini berbentuk ~ / .bash * dan juga sistem / etc / profile. Semua file ini dapat disesuaikan dengan keinginan Anda dan membedakan antara shell interaktif, shell login, shell jauh dll. File-file ini dibaca dalam urutan tertentu dan melayani fungsi-fungsi tertentu.
Bagaimana cara mendapatkan perilaku yang sama di macOS?
Jika Anda menginginkan yang ini saja, satu kustomisasi "mengabaikan duplikat baris perintah yang tepat", Anda dapat memilih jawaban Allan, yaitu menambahkan satu baris saja misalnya file bash_profile Anda. Tidak ada "cara yang tepat" tetapi pilihan yang tak terhitung jumlahnya.
Jika ini bukan satu-satunya penyesuaian untuk bash Anda maka ini mungkin bukan pilihan terbaik:
Beberapa catatan lain:
- Apa pun yang harus tersedia untuk aplikasi grafis ATAU untuk sh (atau bash dipanggil sebagai sh) HARUS di ~ / .profile
- ~ / .bashrc tidak boleh mengeluarkan apapun
- Apa pun yang seharusnya tersedia hanya untuk login shell harus masuk ~ / .profile
- Pastikan bahwa ~ / .bash_login tidak ada.
Itu berarti, ketika segalanya menjadi lebih rumit, ide yang baik untuk menyebar kustomisasi ke beberapa file, masing-masing dari mereka khusus dan sangat teratur dalam isinya:
Semua exports
dapat berada di file mereka sendiri untuk pengawasan yang disederhanakan.
Buat file yang dibaca oleh bash di root direktori pengguna Anda, misalnya disebut .exports
yang berisi:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Ini perlu "bersumber" sehingga file dibaca oleh bash pada startup interaktif:
Sumber file
Jika Anda memiliki banyak konfigurasi shell, Anda mungkin ingin membaginya menjadi beberapa subfile dan menggunakan sumber yang dibangun untuk memuatnya dari .bashrc: dengan menambahkannya source ~/.exports
.
Atau, untuk memastikan file benar-benar ada sebelum memuat
if [ -f ~/.exports ]; then
. ~/.exports
fi
Perintah . ~/.exports
akan sumber ~/.exports
dalam konteks shell yang sedang berjalan.
Ini sangat berguna untuk menambahkan alias, file yang terpisah membuatnya lebih mudah untuk memuatnya kembali saat Anda membuat perubahan.
zsh
dan bahkan lebih jauh untuk menyesuaikan zsh dengan berbagai skrip.