Pourquoi mon système Linux répète-t-il chaque commande que je tape?


55

J'utilise un système Linux Ubuntu et chaque commande que j'entre est affichée sur la ligne suivante, suivie du résultat de la commande. Par exemple:

root@dpkube165:~# ls
ls  <--- why is this here?
Desktop  Documents  Downloads 

root@dpkube165:~# date
date  <--- or this?
Mon Mar 19 11:24:59 EDT 2018

root@dpkube165:~# echo "Hello, world!"
echo "Hello, world!" <--- or this?
Hello, world!

J'ai pensé que cela pourrait avoir à voir avec l'invite, qui est la suivante (PS1):

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

mais consulter des guides en ligne pour inciter des séquences d’évasion n’a rien révélé d’évident.


20
Vous semblez également être connecté en tant que root. Ne fais pas ça!
Toby Speight

5
Oui, je sais éviter la racine la plupart du temps. Ceci est sur une machine virtuelle dans un environnement de test jetable où la racine est requise.
Tchad

9
@TobySpeight c'est un discours éculé, un conseil par cœur.
rackandboneman

2
@TobySpeight Sérieusement, n'appuyez pas cela comme une règle absolue. Dites-moi, qu'est-ce qui ne va pas avec l'utilisation sudo -id'une série de commandes au niveau racine? Surtout quand je débogue quelque chose?
Duncan X Simpson

2
@TobySpeight si vous n'avez pas le temps de vous expliquer, ne donnez pas un «conseil» général, ce qui est souvent inutile.
Tim

Réponses:


89

On dirait que vous avez -vréglé (quelque chose est en cours d'exécution set -v).

Pour inverser cela, lancez set +v.

set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]
       Without  options, the name and value of each shell variable are displayed in a
       format that can be reused as input for setting or resetting the currently-set
       variables. Read-only variables cannot be reset. In posix mode, only shell
       variables are  listed. The output is sorted according to the current locale.
       When options are specified, they set or unset shell attributes. Any arguments
       remaining after option processing are treated as values for the positional
       parameters and are assigned, in order, to $1, $2, ...  $n.  Options, if
       specified, have the following meanings:

[...]

-v      Print shell input lines as they are read.

Reportez-vous à la bashpage de manuel (sous la section " Commandes intégrées au shell ") pour plus d'informations sur la setcommande intégrée.

Vous pouvez également exécuter help setdepuis l'intérieur bashpour un accès plus direct au texte d'aide.


11
Oui! Comme alternative un peu plus pratique que de creuser man bash, vous pouvez aussi help set.
Ravron

5
Vous êtes une légende ... Le temps que j'ai passé à faire défiler la bashpage de manuel ... Merci!
Attie

1
Ma toute première commande après le début d’une bash que je ne possède pas est toujours set -o vi. Confondez cela au fur set -oviet à mesure et vous obtiendrez le comportement ci-dessus.
Guntram Blohm soutient Monica

en ce qui concerne le pourquoi - je soupçonne qu'un script est en cours de création (c'est-à-dire "./srciptname" au lieu de "./scriptname") qui se ferme avant qu'il ne désactive -v, c'est-à-dire qu'il doit "définir + v"
Jmullee

2
BTW, je trouve set -xplus utile pour la journalisation, ou le débogage de choses autres que le contrôle-flux, car il développe les variables pour montrer quelles commandes sont en cours d'exécution, par exemple à la echo fooplace deecho $my_string
Peter Cordes

11

Au moins sur Bash 4.3, cette commande a un effet similaire à celui-ci set -v:

trap 'echo "$BASH_COMMAND"' DEBUG

Pour vérifier si cela vous concerne, lancez

trap -p DEBUG

Pour le désactiver, lancez

trap - DEBUG
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.