¿Por qué mi sistema Linux repite cada comando que escribo?

55

Estoy usando un sistema Ubuntu Linux, y cada comando que ingreso se muestra en la siguiente línea, seguido de la salida del comando. Por ejemplo:

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!

Pensé que podría tener que ver con el indicador, que es el siguiente (PS1):

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

pero revisar las guías en línea para solicitar secuencias de escape no resultó nada obvio.

Chad
fuente
20
También parece haber iniciado sesión como root. ¡No hagas eso!
Toby Speight
55
Sí, sé evitar la raíz la mayor parte del tiempo. Esto está en una máquina virtual en un entorno de prueba desechable donde se requiere root.
Chad
99
@TobySpeight este es un consejo trucado, de memoria.
rackandboneman
2
@TobySpeight En serio, no lo presiones como una regla absoluta. Dime, ¿qué hay de malo en usar sudo -ipara ejecutar una serie de comandos de nivel raíz? ¿Especialmente cuando estoy depurando algo?
Duncan X Simpson
2
@TobySpeight si no tiene tiempo para explicar, no dé "consejos" generales que a menudo no son útiles.
Tim

Respuestas:

89

Parece que lo has -vconfigurado (algo se está ejecutando set -v).

Para revertir esto, corre 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.

Consulte la página de bashmanual (en la sección " Comandos incorporados de Shell ") para obtener más información sobre el setcomando integrado.

Alternativamente, ejecute help setdesde dentro bashpara obtener un acceso más directo al texto de ayuda.

Attie
fuente
11
¡Sí! Como una alternativa un poco más conveniente para excavar man bash, también puede hacerlo help set.
Ravron
55
Leyenda ... El tiempo que he pasado desplazándome en la página de bashmanual ... ¡gracias!
Attie
1
Mi primer comando después de comenzar un bash que no tengo es siempre set -o vi. Incorpore eso como set -oviy obtendrá el comportamiento anterior.
Guntram Blohm apoya a Monica el
en cuanto al por qué: sospecharía que se está originando un script (es decir, ". ./srciptname" en lugar de solo "./scriptname") que luego sale antes de desarmar -v, es decir, al final debería "establecer + v"
jmullee
2
Por cierto, me parece set -xmás útil para registrar o depurar otras cosas que no sean control de flujo, ya que expande las variables para mostrar qué comandos se están ejecutando realmente , por ejemplo, en echo foolugar deecho $my_string
Peter Cordes
11

Al menos en Bash 4.3, este comando tiene un efecto similar a set -v:

trap 'echo "$BASH_COMMAND"' DEBUG

Para comprobar si esto te afecta, ejecuta

trap -p DEBUG

Para desarmarlo, ejecuta

trap - DEBUG
wjandrea
fuente