Чому "!!" ярлик не вдалося виконати раніше запущену команду?


14

Нещодавно я набрав на своєму терміналі

username:~$ !!

і отримав помилку від bash :

bash: !!: command not found

У той же час він досягає успіху, коли це робиться під суперпользователем.

Я дослідив вміст PATH мого користувача і не виявив нічого підозрілого:

/home/username/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Ось вихід:

username:~$ history | tail
1993  date
1994  cal
1995  vcal
1996  uptime
1997  uname
1998  uptime
1999  uname
2000  uptime
2001  uname
2002  history | tail

Ще:

username:~$ echo foo
foo
username:~$ !!
bash: !!: command not found

2
Це завжди буває? Що робити, якщо бігти echo fooі тоді !!? Також, будь ласка, відредагуйте своє запитання та додайте висновок history | tailабо близько того. Чи є у вашої сесії оболонки історія?
тердон

1
Яка мова введення? Використовуєте стандартну англійську або іншу клавіатуру?
Сергій Колодяжний

5
Чи histexpandвстановлено у ваших параметрах оболонки? який вихід echo $-?
steeldriver

2
@muru, ... кажучи як колишній freenode #bash регулярно, я витрачав багато часу, радивши людям відключити це, не отримуючи відштовхування від інших старших каналів - людей дивують команди, з якими !літератори не шануються без додаткове цитування було набагато частішим явищем, ніж пошук того, хто хотів, щоб функція розширення історії не була доступною у більш простій у використанні формі через лінію читання.
Чарльз Даффі

1
@muru, я відключив його посеред мого файлу конфігурації, коли сліпо копіював вміст .bashrc з одного з багатьох файлів-прикладів, які я знайшов в Інтернеті.
Булат М.

Відповіді:


23

Розширення історії може бути вимкнено:

$ echo foo
foo
$ !!
echo foo
foo
$ set +o histexpand
$ set -o | grep hist
histexpand      off
history         on
$ echo foo
foo
$ !!
bash: !!: command not found

Спробуйте set -Hабо set -o histexpand.


@Serg set -o, або спеціальна змінна$-
muru

Гаразд, я бачу, ось що ти робишset -o | grep hist
Сергій Колодяжний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.