Dlaczego „!!” skrót nie może wykonać poprzednio uruchomionego polecenia?


14

Ostatnio pisałem na terminalu

username:~$ !!

i dostałem błąd z bash :

bash: !!: command not found

W tym samym czasie udaje się to, gdy jest wykonywane pod nadzorem administratora.

Sprawdziłem zawartość PATH mojego użytkownika i nie znalazłem niczego podejrzanego:

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

Oto wynik:

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

Inne:

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

2
Czy to się zawsze zdarza? Co jeśli uciekniesz, echo fooa potem !!? Także, proszę edytować swoje pytanie i dodać wyjściu history | taillub tak. Czy twoja sesja powłoki ma jakąś historię?
terdon

1
Jaki jest twój język wprowadzania? Czy używasz standardowej angielskiej lub innej klawiatury?
Sergiy Kolodyazhnyy

5
Czy jest histexpandustawiony w opcjach powłoki? Jaka jest wydajność echo $-?
steeldriver,

2
@muru, ... mówiąc jako były freenode #bash regularnie, spędzałem dużo czasu doradzając ludziom, aby go wyłączali, nie otrzymując żadnych odrzutów od innych starszych kanałów - ludzie byli zaskoczeni rozkazami, a !literały nie były honorowane bez dodatkowe cytowanie było znacznie częstszym zjawiskiem niż znalezienie kogoś, kto chciałby, aby funkcja rozszerzenia historii nie była dostępna w łatwiejszej w użyciu formie poprzez readline.
Charles Duffy,

1
@muru, wyłączyłem go w środku mojego pliku konfiguracyjnego, gdy ślepo kopiowałem zawartość .bashrc z jednego z wielu przykładowych plików, które znalazłem w Internecie.
Bulat M.,

Odpowiedzi:


23

Rozszerzanie historii może być wyłączone:

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

Spróbuj set -Hlub set -o histexpand.


@Serg set -o, lub zmienna specjalna$-
muru,

OK, rozumiem, z tym właśnie robiszset -o | grep hist
Sergiy Kolodyazhnyy,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.