일부 명령을 실행하고 싶지만 명령 기록에 저장하고 싶지 않습니다. 따라서 아무도 .bash_history
파일 에서 검색 할 수 없습니다.
이 방법으로 bash 명령을 실행하는 방법이 있습니까?
답변
공백으로 명령을 시작하면 기록에 포함되지 않습니다.
환경 변수 $HISTCONTROL
를 설정 해야합니다 .
-
다음 명령이 반환되는지 확인
ignorespace
하거나
ignoreboth
#> echo $HISTCONTROL
-
누락 된 환경 변수를 추가하기 위해 다음 행을 bash 프로파일에 추가 할 수 있습니다. 예 :
%HOME/.bashrc
export HISTCONTROL=ignorespace
프로파일을 다시 소싱 한 후에는 공간 접두사가 붙은 명령이 작성되지 않습니다. $HISTFILE
답변
주어진 Bash 세션에서 다음을 입력하여 히스토리 파일을 / dev / null로 설정하십시오.
export HISTFILE=/dev/null
주석에서 지적했듯이 이것은 세션의 명령을 기록에 쓰지 않습니다!
시스템 관리자의 노력을 망쳐 놓지 마십시오.;)
Doodad의 솔루션 은 더욱 우아합니다. 변수를 설정 해제하기 만하면됩니다 : unset HISTFILE
(감사합니다!)
답변
echo "discreet";history -d $(history 1)
답변
@John Doe & @ user3270492의 답변 확장. 그러나 이것은 나를 위해 작동하는 것 같습니다.
<your_secret_command>; history -d $((HISTCMD-1))
히스토리에 명령 항목이 표시되지 않아야합니다.
여기에 설명이 있습니다 ..
‘history -d’는 기록에서 언급 된 항목을 삭제합니다.
HISTCMD는 다음에 실행될 명령의 command_number를 저장합니다. 따라서 (HISTCMD-1)은 마지막으로 실행 된 명령을 나타냅니다.
답변
아마도 역사처럼 쉘을 사용하는 것을 고려할 수 있습니다.
/bin/sh << END
your commands without history
END
(아마도 /bin/dash
또는 /bin/sash
보다 더 적합 할 수 있음 /bin/sh
)
또는 배치 유틸리티를 더 잘 사용하십시오.
batch << EOB
your commands
EOB
역사는 포함됩니다 sh
또는 batch
이는 매우 의미가 없습니다
답변
당신은 세션을 시작할 수 있습니다
export HISTFILE=/dev/null ;history -d $(history 1)
그런 다음 은밀한 행동을 계속하십시오. histfile을 설정하면 /dev/null
히스토리 파일에 기록되지만이 항목은 즉시 삭제되며 최소한 히스토리 파일에 추적이 표시되지 않습니다.
또한 이것은 영구적이지 않습니다.
답변
코멘트 에서 Doodad가 언급했듯이 , unset HISTFILE
이 작업은 훌륭하게 수행하지만 일부 기록을 삭제하려는 경우 echo $HISTFILE
기록 파일 위치 (일반적으로 ~/.bash_history
) 를 가져 unset HISTFILE
오고 편집하십시오 ~/.bash_history
( HISTFILE
물론 지금 무엇이든 unset
할 수 있습니다. 읽지 마십시오).
$ echo $HISTFILE # E.g. ~/.bash_history
$ unset HISTFILE
$ vi ~/.bash_history # Or your preferred editor
그런 다음 기록을 편집하고 편집 한 사실을 편집했습니다!