Saya selalu menggunakan bash untuk bekerja, dan tidak pernah memiliki masalah dengannya. Sekarang, itu tidak menyimpan perintah apa pun dalam sejarah lagi. Jika saya membuka terminal jendela, coba beberapa perintah, itu bertindak seperti semuanya telah bekerja dengan baik dan tunjukkan saya sejarah menggunakan tombol panah. Tetapi jika saya menutup jendela (dan itu adalah waktu yang seharusnya disimpan pada file .bash_history) dan membuka yang lain, tidak ada tanda-tanda perintah terakhir.
Bagaimana saya bisa mengetahui apa yang salah? Atau atur ulang semuanya dari yang kosong.
.bash_sessions_disable
dan tahu itu kembali ke perilaku defaultJawaban:
Saya melakukan ini:
Tambahkan variabel ke
.bash_profile
fileSHELL_SESSION_HISTORY=0
restart terminal dan setelah itu berfungsi seperti yang saya inginkan. (Ini menyimpan perintah setelah saya menutup terminal)
PS Saya juga menggunakan variabel
HISTFILESIZE
danHISTSIZE
HISTSIZE adalah jumlah baris atau perintah yang disimpan dalam memori dalam daftar riwayat saat sesi bash Anda sedang berlangsung.
HISTFILESIZE adalah jumlah baris atau perintah yang (a) diizinkan dalam file histori pada saat startup suatu sesi, dan (b) disimpan dalam file histori di akhir sesi bash Anda untuk digunakan di sesi mendatang.
sumber
Dimulai pada OS X 10.11 El Capitan , skrip yang diinstal sistem
/etc/bashrc_Apple_Terminal
berkoordinasi dengan Terminal untuk menyimpan / mengembalikan histori perintah terpisah untuk setiap terminal yang dipulihkan untuk Resume .Baca komentar di
/etc/bashrc_Apple_Terminal
untuk penjelasan tentang bagaimana mengelola sejarah perintah per-terminal dan bagaimana menyesuaikannya.Jika Anda menyesuaikan
PROMPT_COMMAND
pastikan untuk menyatukan ke nilai sebelumnya sehingga Anda tidak menghapus perintah yang disediakan sistem:Jika Anda memasang
EXIT
penangan sinyal dengantrap
pastikan untuk melakukan sesuatu yang serupa (atau panggil shell_session_update dari penangan Anda jika Anda tidak tahu cara menggabungkannya dengan nilai sebelumnya — itu sedikit terlibat).Saat Anda keluar dari shell, kode ini akan menyimpan perintah baru ke riwayat terminal di
~/.bash_sessions
. Untuk melihat apakah ada masalah, alih-alih menutup terminal, keluar dari shell secara manual denganexit
(atau Control-D). Ini mencatat pesan kemajuan. Catatan jika tidak lengkap atau jika ada peringatan atau pesan kesalahan ditampilkan.Secara umum,
bashrc_Apple_Terminal
upaya untuk mendeteksi dan menonaktifkan riwayat per sesi jika sepertinya pengguna telah melakukan penyesuaian yang tidak kompatibel dengannya. Kedengarannya seperti Anda mungkin telah menemukan yang tidak ditangani. Harap pertimbangkan untuk melaporkan laporan bug dengan Apple: https://developer.apple.com/bug-reporting/sumber
/etc/bashrc_Apple_Terminal
PROMPT_COMMAND digunakan?”? Jika yang terakhir, saya merujuk Anda ke kode, yang didokumentasikan secara rinci. Atau, Anda harus memulai tanya jawab lain tentang itu.Untuk berjaga-jaga jika ada orang lain di luar sana yang memiliki RVM (Ruby Version Manager) diinstal: Periksa untuk melihat apakah Anda memiliki baris berikut di file
~/.profile
,~/.bashrc
atau Anda~/.bash_profile
.[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Itu masalah bagi saya. Coba komentari.
Sumber: Reddit
sumber
Pada pemasangan baru Mac OS X (diperbarui ke 10.13.6), riwayat perintah bash tidak disimpan. Juga tidak ada file .bashrc atau .bash_profile. Dalam hal ini, hanya menambahkan file .bashrc kosong memperbaikinya untuk saya.
Tampaknya hanya itulah yang Anda butuhkan ...
sumber
Saya memiliki masalah yang sama dengan osx Mojave yang baru diinstal. Saya memeriksa
~/.bash_history
file saya dan melihat ini:$ ls -l ~/.bash_history -rw------- 1 root staff 599 Jan 4 20:50 /Users/gilm/.bash_history
Cukup mengunyahnya kembali ke gilm memecahkan masalah. Saya menggunakan:
sudo chown gilm /Users/gilm/.bash_history
dan itu memecahkan masalah saya.
sumber
Anda juga dapat membuat
.bash_logout
file dengan yang berikut:Bersumber dari komentar GitHub
sumber
trap shell_session_update EXIT
sekali secara manual , dan logout. Ada petunjuk dalam/etc/bashrc_Apple_Terminal
skrip yang terlalu membosankan untuk dimasukkan di sini.