Чому моя система Linux повторює кожну команду, яку я набираю?


55

Я використовую систему Ubuntu Linux, і кожна введена команда відображається в наступному рядку, після чого виводиться команда. Наприклад:

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!

Я подумав, що це може стосуватися підказки, яке полягає в наступному (PS1):

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

але перегляд онлайн-путівників для швидкого пошуку послідовностей не виявив нічого очевидного.


20
Ви також здаєтеся, що ви ввійшли в систему як root. Не робіть цього!
Toby Speight

5
Так, я знаю, щоб уникати коренів більшу частину часу. Це на VM в середовищі викидного тестування, де потрібен корінь.
Чад

9
@TobySpeight це хакери, поради щодо розправи.
rackandboneman

2
@TobySpeight Серйозно, не сприймайте це як абсолютне правило. Скажіть, що не так у використанні sudo -iдля запуску серії команд на рівні кореня? Особливо, коли я щось налагоджую?
Дункан X Сімпсон

2
@TobySpeight, якщо у вас немає часу пояснити, не дайте ковдрі "порад", що часто не допомагає.
Тім

Відповіді:


89

Схоже, ви -vвстановили (щось працює set -v).

Щоб змінити це, запустіть 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.

Для отримання додаткової інформації про вбудовану команду див. bashСторінку (у розділі " Командиset побудови оболонки ") .

Крім того, запустіть help setзсередини bashдля отримання більш прямого доступу до довідкового тексту.


11
Так! Як трохи зручнішу альтернативу копанню man bash, ви також можете help set.
ravron

5
Ви легенда ... Час, який я провів на прокручуванні сторінки, bashдякую!
Attie

1
Моя сама перша команда після запуску басу, яким я не володію, - це завжди set -o vi. Вкажіть, що як set -oviі ви отримаєте вищезгадану поведінку.
Гунтрам Блом

що стосується Чому - я б підозрював, що там створюється сценарій (тобто "./srciptname", а не просто "./scriptname"), який потім закривається перед тим, як він скасує -v, тобто в кінці він повинен "встановити + v"
jmullee

2
До речі, я вважаю set -xбільш корисним для ведення журналів або налагодження речей, окрім контрольних потоків, оскільки він розширює змінні, щоб показати, які команди насправді виконуються, наприклад echo fooзамістьecho $my_string
Пітер Кордес,

11

Принаймні, на Bash 4.3, ця команда має аналогічний ефект set -v:

trap 'echo "$BASH_COMMAND"' DEBUG

Щоб перевірити, чи впливає це на вас, запустіть

trap -p DEBUG

Щоб зняти його, запустіть

trap - DEBUG
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.