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 bash
HISTFILE 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 history
ve kullanacağım set -o history
;)
unset HISTFILE
çalışmıyor. set -/+o history
tı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:ignorespace
veya 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/null
aynı etkiye ayarlanmış olarak ayarlayın . Komutların hala hafıza listesine kaydedildiğini anlayın, history
komutu 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.
HISTIGNORE
ki, subsumes
iş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_history
dosyada 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
pwd
O ö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)
HISTFILE
yalnı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 history
yönlendirildiği gibi çalışır.