Mengapa bash tidak menyimpan perintah yang dimulai dengan spasi?


48

Jika saya melakukan urutan perintah seperti:

$ ls
$ grep abc file.txt

dan kemudian gunakan tombol panah atas untuk mendapatkan yang sebelumnya, terminal akan menunjukkan cmd terakhir (yang di grepsini)

Tetapi jika saya melakukan sesuatu seperti ini:

$ ls
$   grep abc file.txt

di mana grepdidahului oleh spasi, menekan memberi ls, tidak grep.

Kenapa ini?


Jawaban:


52
echo $HISTCONTROL
ignoreboth

man bash:

HISTCONTROL

Daftar nilai yang dipisahkan oleh titik dua yang mengendalikan bagaimana perintah disimpan pada daftar riwayat. Jika daftar nilai termasuk ignorespace, garis yang dimulai dengan karakter spasi tidak disimpan dalam daftar riwayat. Nilai ignoredupsgaris penyebab yang cocok dengan entri riwayat sebelumnya tidak disimpan. Nilai ignorebothadalah singkatan untuk ignorespacedan ignoredups.


3
dan HISTCONTROLdiatur ke ignorebothdalam default yang ~/.bashrcdisediakan oleh debiansetidaknya.
Stéphane Chazelas


1
Di Ubuntu 14.04 defaultnya adalah ignorebothyang agak menjengkelkan.
Nick Gammon

6
Ciro, saya berasumsi bahwa Anda dapat memasukkan perintah seperti echo "drop database mydb" | mysql -u root -pPassworddan tidak menyimpannya dalam riwayat.
Jeremy

2
Untuk pengguna mac, HISTCONTROL tidak diatur ke apa-apa, sehingga Anda akan perlu untuk menambahkannya ke bash_profile Anda atau serupa - unix.stackexchange.com/questions/115917/...
chrismarx
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.