HISTSIZE wird nicht in Bash gesetzt


2

Ich versuche, meine Geschichte in Bash zu vergrößern. Ich habe folgendes in meinem ~ / .bash_profile

# Control the command history
export HISTFILESIZE=10000
export HISTSIZE=10000
export HISTCONTROL=ignoredups:erasedups
Aber wenn ich echo $HISTSIZEkomme, bekomme ich immer 50. Vermisse ich etwas? Gibt es einen Befehl, den mein Sys-Administrator in eine höhere Konfigurationsdatei geschrieben hat, der verhindern könnte, dass HISTSIZE geändert wird?


Was passiert, wenn du echo $HISTSIZEunmittelbar danach bist export? Erhalten Sie in diesem Fall immer noch 50?

@Dunnie Gute Frage. ~ $ echo $ HISTSIZE 50 ~ $ export HISTSIZE = 100 ~ $ echo $ HISTSIZE 100 ~ $ Damit kann ich die HISTSIZE in der Befehlszeile einstellen, aber nicht in meinem .bash_profile.
jlconlin

Und bekommst du den gleichen Output wenn du das echoin dein platzierst .bash_profile? Ich versuche im Grunde festzustellen, ob Sie .bash_profilees überhaupt nicht einstellen oder ob es später überschrieben wird.

@Dunnie Ja, du hattest recht. In einer dieser Dateien ist etwas enthalten, das HISTSIZE ändert. Ich habe die Reihenfolge der Beschaffung von Dateien geändert und jetzt funktioniert es. Danke für Ihre Hilfe.
jlconlin

Antworten:


3

Viele Distributionen scheinen irgendwo darin .bash_profileScheck zu haben .bashrc. Könnten Sie .bashrcirgendwann später einen Sourcing-Wert HISTSIZEvon 50 festlegen ?


Ich habe .bashrc und (auf diesem System) .bashrc.local überprüft. Beide werden nach .bash_profile aufgerufen und enthalten keine Informationen zu HISTSIZE.
jlconlin

1
Beschafft Ihr .bash_profile(oder ein Nachkomme) andere Dateien? /etc/profilekönnte auch ein Schuldiger sein.
Miles Strombach

5

Was ist Ihr Betriebssystem und Ihre BASH-Version? Versuchen

echo $BASH_VERSION

Ich benutze 4.2.20(2)-releaseüber Mac OS X Lion / Homebrew ... Hier ist meine Konfig

export HISTIGNORE="ls:ll:cd:pwd"
export HISTFILESIZE=3000
export HISTSIZE=3000
export HISTCONTROL=ignoredups:erasedups
export HISTTIMEFORMAT="[$(tput setaf 6)%F %T$(tput sgr0)]: " # colorful date

Versuchen Sie, Ihre Bash zu aktualisieren. Vielleicht überschreibt auch ~/.bashrcoder /etc/bashrcoder /etc/profileIhre lokalen Einstellungen ...


0

Setzen Sie die Variablen ein /etc/environment.


Putting HISTSIZE=5000oder HISTFILESIZE=5000in /etc/environmenttut nichts für mich. Ich bin in Arch Linux.
Trusktr

Oh, warte, das Einfügen der Variablen in ~ / .bashrc oder /etc/bash.bashrc funktioniert.
Trusktr

Es funktioniert, aber es scheint, dass ich mich erneut anmelden muss ? Weil ich einen Beweis habe, dass sich nichts geändert hat, weil cat ~/.bash_history | wc -les ein klares 2000 gibt, das die Standardeinstellung ist - und ich ungefähr doppelt so viel gesetzt habe. In der bashmanuellen Version heißt es: "Die Shell setzt den Standardwert auf den Wert von HISTSIZE, nachdem alle Startdateien gelesen wurden." Möglicherweise wird eine .bash_historybereits vorhandene Datei NICHT erweitert . Es bleibt bei der Standardeinstellung von 2000 Zeilen. Bevor Sie vertrauen bash, sollten Sie die obige Zeile ausführen, um zu wissen, dass sie nicht versucht, Sie zu täuschen.
Syntaxfehler

0

Sie werden ~/.bash_profilemöglicherweise nicht ausgeführt, oder es gibt später ein Skript, das den Wert überschreibt. Sie können einige echo bash_profilezu überprüfende Anweisungen hinzufügen .

In der Regel sind diese Bash-Variablen in definiert .bashrc, sodass Sie versuchen können, sie dorthin zu verschieben.

Auch nicht exportmit den HIST*Variablen verwenden. Sie sind keine Umgebungsvariablen, sondern bash-Variablen. Sie zu exportieren ist sinnlos. Das ist der Grund, warum /etc/environmentes nichts bringt, sie einzusetzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.