Saya mulai menggunakan Mac baru-baru ini dan sebelum saya dulu bekerja di Ubuntu.
Misalkan saya menjalankan perintah ini satu per satu di terminal saya:
python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
Sekarang anggaplah saya ingin menjalankan python main.py
lagi, jadi saya akan mengklik tombol atas. Saya perlu mengklik tombol hanya dua kali di Ubuntu tetapi 7 kali pada Mac.
Jika dua perintah berurutan sama, maka terminal harus hanya mengingat satu perintah alih-alih mengingat dua perintah yang berbeda.
Bagaimana saya bisa mewujudkannya di macOS?
zsh
dan bahkan lebih jauh untuk menyesuaikan zsh dengan berbagai skrip.Jawaban:
Anda perlu menambahkan variabel lingkungan HISTCONTROL ke
.bash_profile
. Di.bash_profile
tambahkan Anda baris berikut:Tutup dan mulai kembali sesi bash Anda dan dupes harus hilang. Atau, Anda bisa menjalankan baris yang sama dan itu akan berlaku untuk sesi itu (gunakan untuk mengujinya).
Dari halaman manual untuk
bash
(di Terminal):sumber
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:
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:Ini perlu "bersumber" sehingga file dibaca oleh bash pada startup interaktif:
Atau, untuk memastikan file benar-benar ada sebelum memuat
Perintah
. ~/.exports
akan sumber~/.exports
dalam konteks shell yang sedang berjalan.sumber
.exports
membaca (bersumber)?HISTCONTROL
diatur dalam.bashrc
dan~/.bashrc
bersumber di~/.bash_profile
maka tidak ada kebutuhan untukexport
ituHISTCONTROL
variabel. Baik shell login interaktif maupun shell interaktif akan memiliki set variabel.Untuk merekam secara unik setiap perintah baru itu rumit. Pertama, Anda perlu menambahkan
~/.profile
atau serupa:Maka Anda perlu menambahkan
~/.bash_logout
:sumber