Bir tür "gizli" moda girmek için tarih takibini bash olarak geçici olarak askıya almanın bir yolu var mı? Terminalime kaydedilmesini istemediğim, hassas finansal bilgiler verdiğim şeyleri giriyorum.
Bir tür "gizli" moda girmek için tarih takibini bash olarak geçici olarak askıya almanın bir yolu var mı? Terminalime kaydedilmesini istemediğim, hassas finansal bilgiler verdiğim şeyleri giriyorum.
Yanıtlar:
Aradığın şey bu olmalı:
unset HISTFILE
man bashHISTFILE ayarlanmamışsa veya geçmiş dosyası istenmeyen ise, tarih kaydedilmez.
Alternatif olarak, kapatmak ve tekrar açmak isterseniz, kullanımı daha kolay olabilir set:
set +o history
set -o history
set +o historyve kullanacağım set -o history;)
unset HISTFILEçalışmıyor. set -/+o historytıkır tıkır çalışıyor! teşekkürler
HISTCONTROLİçerdiğinden emin olun ignorespace. Muhtemelen bilgisayarınıza eklemek HISTCONTROL=ignorespace(veya HISTCONTROL=ignoredups:ignorespaceveya başka bir şey) isteyeceksiniz ~/.bashrc. Daha sonra boşlukla başlayan herhangi bir komut satırı geçmişten çıkarılır.
Bir başka olasılık da geçmişini kaydetmeyen yeni bir bash oturumu başlatmak.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Birkaç komut saklamaktan kaçınmanız gerekiyorsa ve önceki komutlara erişmek için hala yukarı ok kullanmak istiyorsanız, aşağıdakileri kullanın:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Komutların nasıl kaydedildiğini kontrol etmenin dört yolu (seviye) vardır.
İlk ve en basit olanı kullanmaktır ignorespace(veya görmezden gelinir):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Bu, hafıza listesine kaydedilmesini önlemek istediğiniz komutlardan önce bir boşluk kullanmanıza izin verecektir history. Sonuç olarak, bellekte kaydedilmiş hiçbir komut olmadığından dosyaya gönderilebilecek bir komutun içinde listelenen dosyaya gönderilmesini de önleyecektir $HISFILE.
Dosyaya komutları kaydetmekten kaçının $HISTFILE:
$ unset HISTFILE
Eğer ayarlanmamışsa, bir kabuk çıkarken komut geçmişi kaydedilmez.
Boş HISTFILE=''ve / veya HISTFILE=/dev/nullaynı etkiye ayarlanmış olarak ayarlayın . Komutların hala hafıza listesine kaydedildiğini anlayın, historykomutu veya yukarı oku deneyin .
Uyarı: HISTFILE, kabuk mevcut olmadan önce sıfırlanırsa, belleğe kaydedilenlerin hepsi yine de dosyaya yazılabilir.
Bellekteki geçmiş listesine yeni komutlar kaydetmekten kaçının . Ve bellekte olmadığı için dosyaya kaydedilemez.
$ shopt -ou history # or set +o history
shopt -os history(Veya set -o history) ile tekrar etkinleştir
Bellekteki tüm komutları geçmiş listesine kaldır:
$ HISTSIZE=0
Tüm komutlar silinir (bellekten) ve bu nedenle değişken, geçerli bir sayısal değere tekrar ayarlanıncaya kadar, hiçbir şey dosyaya kaydedilemedi.
man historyçoğumuz için kesmeyecek.
HISTIGNOREki, subsumesişlevi HISTCONTROL.
LESS=+'/^ *HISTI' man bash("manuel sayfalar" değil?). @NathanBasanese
Geçmişi kapatmanın basit bir yolu vardır, bu nedenle komutlar .bash_historydosyada saklanmaz .
Boşluk veya sekme boşluğunu herhangi bir komutun önüne koymanız gerekir, böylece bu komut geçmişe kaydedilmez. Örneğin:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
pwdO önünde boşluk olduğundan komut, tarihteki mağaza alamayacak.
export HISTFILE=/dev/null
Bu benim yolum. Sadece HISTORY / HISTFILE / HISTCONTROL, vb ... setinin işe yaramaması durumunda, / dev / null 'a dışa aktarma her zaman benim için çalıştı.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILEyalnızca bash çıktığında kontrol edilir, bu nedenle ilk yöntem olduğu gibi çalışmaz (değeri geri yüklerseniz, komut kaydedilir).set +o historyyönlendirildiği gibi çalışır.