IT Share you

현재 bash 세션을 기록에 저장하지 마십시오.

shareyou 2020. 12. 13. 11:24
반응형

현재 bash 세션을 기록에 저장하지 마십시오.


열 때 .bash_history이전 세션의 항목 만 포함되어 있음을 알 수 있으며 현재 세션은 종료시에만 추가되는 것 같습니다. 현재 세션이 저장되지 않도록하는 방법이 있습니까? 충돌조차도 bash방법을 안다면 옵션입니다. 나는 내가 kill -9그 과정을 할 수 있다는 것을 알았지 만 더 좋은 방법이 있다면 내가 알고 싶어하는 것입니다.


bash 충돌보다 더 우아한 방법은 history -c명령을 사용 하여 현재 세션의 기록을 지우는 것입니다. 그런 다음 저장할 것이 없습니다 (기록에서 자체적으로 지워짐).


$HISTFILE변수 설정 해제

$ unset HISTFILE

HISTFILE이 설정되지 않았거나 히스토리 파일이 쓸 수없는 경우 히스토리가 저장되지 않습니다.
http://www.faqs.org/docs/bashman/bashref_106.html


나는 이것이 오래된 스레드라는 것을 알고 있습니다. 완료를 위해 이것을 추가하고 싶었습니다.

당신은 단지 특정 명령을 원하는 경우에 경우에 체크를 저장하지 HISTCONTROL변수가 설정됩니다 HISTCONTROL=ignoreboth또는HISTCONTROL=ignorespace

선행 공백으로 시작하는 모든 명령은 기록에 포함되지 않습니다.

내 2 센트.


와 유사한 다른 옵션이 history -c있지만 현재 세션 이전의 항목을 지우지 않습니다.

그것은이다 history -r으로부터 역사를 다시로드하는, HISTFILE방금 로그인 한 경우처럼.

이것이 작동하는지 또는 4.3.11 이전의 bash 버전에서 사용할 수 있는지는 모르겠지만 목록에 포함하는 것이 유용 할 것입니다.

다음은이 명령과 명령의 차이점을 보여주는 예입니다 -c.

user@host:~$ # I Just logged in
user@host:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one
 4679  2014-08-23 17:15:29 # Previous session
 4680  2014-08-23 17:15:33 # Still the previous session
 4681  2014-08-23 17:15:37 # note the datetime
 4682  2014-08-23 17:15:44 exit
 4683  2014-08-23 17:17:25 # I Just logged in
 4684  2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session
user@host:~$ # This is a secret command, so I need to remove the traces of this session
user@host:~$ history -r
user@host:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command
 6242  2014-08-23 17:15:29 # Previous session
 6243  2014-08-23 17:15:33 # Still the previous session
 6244  2014-08-23 17:15:37 # note the datetime
 6245  2014-08-23 17:15:44 exit
 6246  2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command
user@host:~$ history -c # instead if I issue history -c
user@host:~$ history # everything disappears
 5248  2014-08-23 17:23:13 history # everything disappears
user@host:~$

그렇게해야합니다.

HISTFILE=

HISTFILE을 설정 해제하십시오.


다음은 나를 위해 작동합니다.

 export HISTFILE=/dev/null 

앞에 공백이 있습니다. 대부분의 최신 배포판은 bash 히스토리에 공백 뒤에 입력되는 명령을 추가하지 않습니다. 그것은 당신의 역사에도 그 선이 나타나지 않게 할 것입니다.


다음은 bash 히스토리 툴킷입니다.

아무것도 쓰지 않고 bash 종료

kill -9 $$

이것은 해키하고 공격적입니다. 그러나 간첩 세션을 끝내는 것은 재미있는 방법입니다.

기억에서 기록 지우기

history -c

이것은 모든 역사의 기억지 웁니다 . 위쪽 화살표를 치면 아무것도 얻지 못합니다. 당신 은 그대로입니다. 당신은 이것을 증명할 수 있습니다 ...$HISTFILE

디스크에서 기록 다시로드

history -r

이것은를 다시 $HISTFILE읽고 메모리의 히스토리에 추가합니다 (있는 경우). 이전 명령에 대한 + 검색 또는 위쪽 화살표 history -c기능을 다시 얻기 위해이 작업을 수행 할 수 있습니다 . (로그 아웃했다가 다시 로그인하는 대신이 작업을 수행 할 수 있습니다.)CtrlR

참고 : 기록을 먼저 지우지 않은 경우 메모리의 현재 기록에 추가됩니다. 이것은 역사 모호하게 하여 위쪽 화살표를 몇 번 치면 숨기고 싶은 것이 사라 졌다고 생각하는 데 편안함을 줄 것 입니다. 실제로 그것은 그냥 묻혀 있고 당신의 $HISTSIZE또는 보다 더 깊지 않으면 디스크에 기록 될 것입니다 $HISTFILESIZE.

기록에 포함하지 않고 명령 실행

echo foo bar baz; history -d $(history 1)

This uses history -d to delete an entry by number. Since only the first argument is used (and others are ignored) we can use the output of history 1 (which is identical to history | tail -n 1) to get the number of the current entry.

Because bash oneliners are single history entries, you can do multiple commands like so:

echo foo; echo bar; echo baz; history -d $(history 1)

This also works:

echo foo \
bar \
baz; history -d $(history 1)

Even this works:

for x in foo bar baz; do
echo $x
done; history -d $(history 1)

Delete your password (a command, etc.) from your history

If all you are concerned about is getting rid of a single entry, you can use the previous example creatively. Use history to find the number of the entry to delete. Then delete it by number. For example...

$ history
  1  pwd
  2  date
  3  sudovisudo
  4  hunter2
  5  man history
  6  help history
  7  history
$ history -d 4

I hope I don't have to tell you this, but just in case: Don't grep history for your password. If you "really do" need to search history, do history | LESSHISTFILE=/dev/null less, and explicitly do a / search.

If you are really embarrassed and want there to be no record of you deleting something from history, you can combined this concept with the last.

history -d 4; history -d $(history 1)

Or to also get rid of the original mistake...

for n in "$(history 1)" 4 3; do history -d $n; done

Notice that you have to cycle over the entry numbers in decending order because each call to history -d pops the entry out of the list and all subsequent entries' numbers decrease by 1. Also, you have to double quote the subshell because history 1 returns not just the number, but also the command and its arguments, and each would get a separate cycle in the for loop. But at this point this is turning into a bash lesson and I'll stop.

참고URL : https://stackoverflow.com/questions/9039107/dont-save-current-bash-session-to-history

반응형