Por que meu sistema Linux está repetindo todos os comandos que digito?


55

Estou usando um sistema Ubuntu Linux e todos os comandos que digito são exibidos na próxima linha, seguidos pela saída do comando. Por exemplo:

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!

Eu pensei que isso poderia ter a ver com o prompt, que é o seguinte (PS1):

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

mas revisar guias on-line para solicitar seqüências de escape não revelou nada óbvio.


20
Você também parece estar logado como root. Não faça isso!
precisa

5
Sim, eu sei evitar raiz a maior parte do tempo. Isso ocorre em uma VM em um ambiente de teste descartável em que a raiz é necessária.
Chad

9
@TobySpeight, este é um conselho rotineiro e rotineiro.
rackandboneman

2
@TobySpeight Sério, não force isso como uma regra absoluta. Diga-me, o que há de errado em usar sudo -ipara executar uma série de comandos no nível raiz? Especialmente quando estou depurando alguma coisa?
Duncan X Simpson

2
@TobySpeight, se você não tiver tempo para explicar, não dê "conselhos" gerais, que muitas vezes são inúteis.
Tim

Respostas:


89

Parece que você -vdefiniu (algo está em execução set -v).

Para reverter isso, execute 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 a página de bashmanual (na seção " Comandos internos do shell ") para obter mais informações sobre o setcomando interno.

Como alternativa, execute a help setpartir de dentro bashpara obter acesso mais direto ao texto de ajuda.


11
Sim! Como uma alternativa um pouco mais conveniente para cavar man bash, você também pode help set.
ravron

5
Sua lenda ... O tempo que passei rolando na página de bashmanual ... obrigado!
Attie

11
Meu primeiro comando após iniciar um bash que não possuo é sempre set -o vi. Digite errado como set -ovie você obterá o comportamento acima.
Guntram Blohm

quanto ao Porquê - eu suspeitaria que um script está sendo originado (por exemplo, "./srciptname" em vez de apenas "./scriptname") que sai antes de desabilitar -v, ou seja, no final, ele deve "definir + v"
jmullee 21/03/19

2
BTW, eu acho set -xmais útil para o registo ou a depuração dos outros do que o controle de fluxo de coisas, porque ele se expande variáveis para mostrar o que os comandos são realmente sendo executado, por exemplo, echo fooem vez deecho $my_string
Peter Cordes

11

Pelo menos no Bash 4.3, este comando tem um efeito semelhante a set -v:

trap 'echo "$BASH_COMMAND"' DEBUG

Para verificar se isso afeta você, execute

trap -p DEBUG

Para desabilitar, execute

trap - DEBUG
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.