なぜ「!!」ショートカットは前に実行したコマンドを実行できませんか?


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
入力言語は何ですか?標準の英語または他のキーボードを使用していますか?
セルギーKolodyazhnyy

5
されたhistexpandシェルのオプションに設定されていますか?の出力はecho $-何ですか?
スチールドライバー

2
@muruは、...正規の元freenodeのの#bashとして言えば、私は他のチャネルの長老から任意のプッシュバックを得ることなく、それを無効にする人々に助言を多くの時間を過ごすために使用される-とのコマンドに驚かされている人々!なしで表彰されていないリテラル余分な引用は、readlineを通じて使いやすい形式で利用できない履歴拡張機能を必要とする人を見つけるよりもはるかに一般的な出来事でした。
チャールズダフィー

1
@muru、インターネットで見つけた多くのサンプルファイルの1つから.bashrcコンテンツを盲目的にコピーしていたときに、構成ファイルの途中で無効にしました。
ブラットM.

回答:


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

OK、わかりました、それはあなたがやっていることですset -o | grep hist
セルギー・コロディアズニー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.