Mon histoire bash a mystérieusement cessé de fonctionner, et je n'ai aucune idée de comment y remédier. Voici à quoi ressemble mon .bashrc:
HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history
Cependant, lorsque je l'exécute, echo $HISTFILE
il s'imprime /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew
.
Je suis le propriétaire du fichier .bash_history, donc je ne suis pas trop sûr de la façon dont je voudrais résoudre ce problème.
Merci!
$HISTFILE
, par intérêt? Je n'ai pas d'.bashrc
OSX etecho $HISTFILE
signale l'endroit auquel je m'attendrais - commenter les lignes en question a-t-il un effet?HISTFILE="$HOME/.bash_history”
. Sans les guillemets, votre version ne sera pas valide si le chemin d'accès à votre répertoire personnel contient des espaces (ou éventuellement d'autres caractères spéciaux).Réponses:
Le terminal attribue à chaque session de terminal un identifiant unique et le communique via la variable d'environnement TERM_SESSION_ID afin que les programmes s'exécutant dans un terminal puissent enregistrer / restaurer l'état spécifique à l'application lors de la fermeture et du redémarrage du terminal avec la reprise activée.
Un nouveau dossier (~ / .bash_sessions /) est utilisé pour stocker les fichiers HISTFILE et .session qui sont uniques aux sessions.
Au démarrage du shell, le fichier de session est exécuté. Les anciens fichiers sont supprimés périodiquement.
Le comportement par défaut organise l'enregistrement et la restauration de l'historique des commandes bash indépendamment pour chaque session de terminal restaurée. Il fusionne également les commandes dans l'historique global des nouvelles sessions.
Vous pouvez désactiver ce comportement et partager un seul historique en définissant
Si HISTTIMEFORMAT est défini, l'historique par session est désactivé par défaut (en savoir plus dans / private / etc / bashrc_Apple_Terminal)
Le mécanisme de sauvegarde / restauration est désactivé si le fichier suivant existe:
Apple a déjà modifié certains comportements depuis la sortie d'El Capitan, il est donc préférable d'aller en savoir plus ici
less /private/etc/bashrc_Apple_Terminal
la source
~/.bash_sessions_disable
fichier est conçu en dernier recours en cas de problème qui ne peut pas être résolu spécifiquement. Il désactive plus que les historiques de commandes par session et vous pouvez désactiver uniquement l'historique des commandes par session. Voir les commentaires dans/etc/bashrc_Apple_Terminal
pour plus de détails.export SHELL_SESSION_HISTORY=0
.bashrc
et.bash_profile
unix.stackexchange.com/a/310150/15362J'ai remarqué quelque chose de similaire après la mise à niveau d'El Capitan. Le simple fait d'ajouter le fichier
.bash_sessions_disable
dans votre répertoire personnel désactive les nouvelles sessions bash et.bash_history
est de nouveau utilisé.Ce fil Reddit a plus d'informations et d'autres liens.
la source
~/.bash_sessions_disable
fichier est conçu en dernier recours en cas de problème qui ne peut pas être résolu spécifiquement. Il désactive plus que les historiques de commandes par session et vous pouvez désactiver uniquement l'historique des commandes par session. Voir les commentaires dans/etc/bashrc_Apple_Terminal
pour plus de détails.SHELL_SESSION_HISTORY=0
en haut de~/.bash_profile
.Vous pouvez résoudre le problème RVM en mettant à jour la dernière version RVM ou en exécutant ceci:
Voir https://github.com/rvm/rvm/issues/3540 pour plus d'informations.
la source
Cette réponse du fil Reddit m'a sauvé:
la source
Si c'est un Mac, je suppose que son shell de connexion par défaut est
bash
et qu'il fonctionne à la.profile
place de.bashrc
. Donc, vous éditiez le mauvais fichier.la source
$HISTFILE
dans différentes parties deprofile
? Peut-être que vous sourcez un autre script qui change la variable? J'ai vérifié les deuxTerminal
etiTerm
,bash
3
et les4
deux ont leur valeur par défaut$HOME/.bash_history
.$HISTFILE
change. Ainsi, il suffit d'en faire deuxecho $HISTFILE
entourer votre code. Ce que vous devez faire est de trouver le morceau de code où les$HISTFILE
changements seecho $HISTFILE
produisent en rapprochant les deux lignes de plus en plus l'une de l'autre jusqu'à ce que quelque chose se révèle. C'est tout.echo $HISTFILE
le faire sur chaque ligne, juste pour voir s'il y avait des différences. Cependant, il n'a fait qu'imprimer/Users/username/.bash_history
une myriade de fois. J'ai ensuite couruecho $HISTFILE
dans le shell, et il est sorti/Users/nelsonliu/.bash_sessions/CD275A29-1DF1-4ED8-B8CE-F706B11B812F.historynew
.Je voyais ce problème sur High Sierra. D'une certaine manière, mon propre .bash_history était devenu la propriété de root et n'avait même pas les autorisations de lecture pour les autres utilisateurs (lorsque le contenu du répertoire personnel était affiché avec ls -al)
Il n'y avait aucune conséquence dans ce fichier .bash_history, j'ai donc fait un sudo rm .bash_history suivi d'une touche .bash_history pour en créer un nouveau.
Tout va bien maintenant
la source
~/.bash_profile
fichier:export HISTTIMEFORMAT='%F %T '