2015-12-07 7 views
6

Comme nous le savons, la commande 'history' affiche l'historique de la ligne de commande du serveur Linux et 'history -c' est la commande pour effacer/supprimer cet historique de ligne de commande.Comment utiliser la commande 'history-c' dans un script bash?

Je dois déclencher cette commande via mon script bash. Script est la suivante,

#! /bin/bash 
var=`history -c` 
if [ $? -eq 0 ] 
then 
echo "cleared" 
echo $var 
fi 

sortie est la suivante:

cleared 

Bien que son impression "effacé" comme la sortie, l'histoire-c ne supprime pas l'histoire.

Ce serait génial si vous pouvez guider/suggérer sur la façon dont je peux y parvenir, c'est-à-dire en utilisant la commande "history-c" dans mon script bahs pour supprimer l'historique de la ligne de commande.Ou y at-il un autre moyen? l'historique des lignes de commande à travers mon script bash.

Merci & Cordialement, Navya

+0

https://askubuntu.com/questions/546556/how-can-i-use-history-command-in-a-bash-script – dsm

Répondre

2

history -c efface l'historique de la coquille en cours, et ne supprime pas ~/.bash_history. Mais lorsque vous exécutez un script, le shell actuel crée un nouveau shell pour exécuter le script et quitte ce shell lorsque le script est terminé. Au lieu de cela, pour exécuter un script dans le shell actuel, vous devez rechercher le script. Si le nom de votre script est foo.sh, essayez d'exécuter . ./foo.sh

Mais dans les deux cas, le script que vous avez écrit n'exécute pas la commande. Modifier à quelque chose comme ceci:

#! /bin/bash 
history -c 
if [ $? -eq 0 ] 
then 
echo "cleared" 
fi 
+0

Merci Nikhil. . ./foo.sh fonctionne maintenant :). Je voudrais utiliser cette commande dans le fichier d'opérations personnalisées de SAP Host Agent, mais il génère une erreur. Existe-t-il un autre moyen de supprimer l'historique pour l'utilisateur root? Ou n'importe quel moyen d'inclure le. Commande ./foo.sh dans le fichier des opérations? Votre aide sera appréciée. Merci et salutations, Navya –