[PROMPT] Erreur de syntax

Erreur de syntax [PROMPT] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 25-09-2008 à 09:03:52    

Bonjour,
 
Depuis que j'ai modifié mon prompt afin d'avoir les logs d'history timestampé, j'ai un message d'erreur bash à chaque commande que je tape :
 

-bash: [: -eq: unary operator expected


 
 
Dans mon /etc/bashrc :

H2=0
export PROMPT_COMMAND='H=`history 1` ; H1=${H:0:6} ; [ '$H1' -eq '$H2' ] || echo `date +"%F %T"` "$USER" "${H:6}" >> /var/log/bash_logs ; H2=$H1`


 
Je pense que cela vient du faite que j'ai un chiffre dans mon prompt :  
 

[root@mail2 root]


 
Car sur un autre serveur ou j'ai fais la même config, et ou il n'y a pas de chiffre dans mon prompt, je n'ai pas ce problème.
 
 
Savez-vous comment je peux modifier mon PROMPT_COMMAND afin de régler ce problème.
 
Merci
 
Cordialement,


Message édité par hpoz le 25-09-2008 à 10:45:49
Reply

Marsh Posté le 25-09-2008 à 09:03:52   

Reply

Marsh Posté le 25-09-2008 à 12:54:37    

Le message d'erreur veut dire que H1 est vide.

Reply

Marsh Posté le 25-09-2008 à 17:09:57    

non car quand je fais echo $H1 j'ai bien une valeur :)

Reply

Marsh Posté le 26-09-2008 à 12:47:12    

Je te dis qu'il est vide. Comme il est en dehors des simple quotes, il est interprété au moment où tu définis PROMPT_COMMAND, pas au moment où PROMPT_COMMAND est interprété... Par contre tu définis H1 entre les guillemets, donc l'affectation est faite quand PROMPT_COMMAND est interprété, pas quand il est défini.
 
Autrement dit, ton PROMPT_COMMAND vaut ça :

H=`history 1` ; H1=${H:0:6} ; [ -eq 0 ] || echo `date +"hhhhh%F %T"` "$USER" "${H:6}" >> /var/log/bash_logs ; H2=$H1


Ce qui n'est évidemment pas correct.
 
Donc enlève ces simple quotes autour de $H1 et de $H2, et ça devrait marcher.
 
Ah et aussi, c'est quoi ce back-quote à la fin de ta ligne ? Ca devrait être un simple quote.

Reply

Marsh Posté le 06-11-2008 à 21:54:43    

Si tu es en bash, ya des variable qui se reglent pour eviter les doublons et pour ajouter la date.
Pas besoin de code gruik :)
 
Je te propose  dans ~.bashrc :

Code :
  1. export HISTCONTROL=ignoredups
  2. export export HISTTIMEFORMAT='%F %T

'
 
Ce qui donne :

Code :
  1. $ ls .bashrc>/dev/null
  2. $ ls .bashrc>/dev/null
  3. $ ls .bashrc>/dev/null
  4. $ history|tail -5
  5. 2133  2008-11-06 21:56:09 bar
  6. 2134  2008-11-06 21:56:11 base
  7. 2135  2008-11-06 21:56:14 zope
  8. 2136  2008-11-06 21:56:18 ls .bashrc>/dev/null
  9. 2137  2008-11-06 21:56:23 history|tail -5
  10. 2008-11-06 21:54:00 history|tail -5
  11. $


Message édité par sputnick le 06-11-2008 à 21:56:53
Reply

Marsh Posté le 08-11-2008 à 00:00:34    

Oui mais la version de bash que j'ai ne permet pas d'utiliser ces options.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed