왜 '!!' 바로 가기가 이전에 실행 한 명령을 실행하지 못합니까?


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. 쉘 세션에 기록이 있습니까?
terdon

1
입력 언어는 무엇입니까? 표준 영어 또는 다른 키보드를 사용하고 있습니까?
Sergiy Kolodyazhnyy

5
되어 histexpand쉘 옵션에서 설정? 출력은 echo $-무엇입니까?
스틸 드라이버

2
사람들과 명령에 의해 놀라게되고 - @muru ... 일반 전 Freenode의의 #bash으로 말해서, 나는 다른 채널 장로들에서 어떤 푸시 백받지 않고, 그것을 해제하는 사람을 조언 많은 시간을 보내는 데 사용 !리터럴 않고 영광되지를 추가 인용은 readline을 통해 사용하기 쉬운 형태로 히스토리 확장 기능을 사용할 수없는 사람을 찾는 것보다 훨씬 흔하게 발생했습니다.
Charles Duffy

1
@muru, 인터넷에서 찾은 많은 예제 파일 중 하나에서 맹목적으로 .bashrc 내용을 복사 할 때 구성 파일 중간에 사용하지 않도록 설정했습니다.
Bulat 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

알았어. 네가하는 일이야set -o | grep hist
Sergiy Kolodyazhnyy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.