Tại sao '!!' phím tắt không thực hiện lệnh chạy trước đó?


14

Gần đây tôi đã gõ tại nhà ga của tôi

username:~$ !!

và có lỗi từ bash :

bash: !!: command not found

Đồng thời, nó thành công khi được thực hiện dưới superuser.

Tôi đã điều tra nội dung PATH của người dùng của tôi và không tìm thấy điều gì khả nghi:

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

Đây là đầu ra của:

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

Khác:

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

2
Nó luôn luôn xảy ra? Điều gì nếu bạn chạy echo foovà sau đó !!? Ngoài ra, vui lòng chỉnh sửa câu hỏi của bạn và thêm đầu ra history | tailhoặc hơn. Phiên shell của bạn có lịch sử nào không?
terdon

1
Ngôn ngữ đầu vào của bạn là gì? Bạn đang sử dụng tiếng Anh chuẩn hay một số bàn phím khác?
Sergiy Kolodyazhnyy

5
Được histexpandđặt trong tùy chọn vỏ của bạn? đầu ra là echo $-gì?
Steeldo

2
@muru, ... nói như một cựu #bash freenode thường xuyên, tôi sử dụng để dành nhiều thời gian tư vấn cho folks để vô hiệu hóa nó, mà không nhận được bất kỳ pushback từ những người lớn tuổi kênh khác - người được ngạc nhiên bởi các lệnh với !chữ không được vinh dự mà không trích dẫn thêm là một sự xuất hiện phổ biến hơn nhiều so với việc tìm ai đó muốn chức năng mở rộng lịch sử không có sẵn ở dạng dễ sử dụng hơn thông qua đường đọc.
Charles Duffy

1
@muru, tôi đã vô hiệu hóa nó ở giữa tệp cấu hình của mình khi sao chép một cách mù quáng nội dung .bashrc từ một trong nhiều tệp ví dụ tôi tìm thấy trên internet.
Bulat M.

Câu trả lời:


23

Mở rộng lịch sử có thể bị vô hiệu hóa:

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

Hãy thử set -Hhoặc set -o histexpand.


@Serg set -o, hoặc biến đặc biệt$-
muru

OK, tôi hiểu rồi, đó là những gì bạn đang làm vớiset -o | grep hist
Sergiy Kolodyazhnyy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.