각 명령 후에 ksh에서 새로 고침 기록을 켜거나 플러시를 중지합니다.

각 명령 후에 ksh에서 새로 고침 기록을 켜거나 플러시를 중지합니다.

나는 bash와 달리 ksh가 모든 명령 후에 기록을 새로 고친다는 것을 읽었습니다. 이것은 많은 사람들에게 좋은 일일 수도 있지만, 나에게는 미치게 만듭니다!

내 작업을 위해 여러 개의 창이 열려 있었는데, 공유 기록이 명령의 특정 세션 기록과 혼동되었습니다.

로그아웃 시 명령 기록에만 기록이 추가되도록 이 새로 고침을 비활성화할 수 있는 방법이 있습니까?

아니면 매번 명령줄 기록을 새로 고치는 대신 기록을 요청하는 방법이 있을까요?

답변1

screen내 .khsrc에는 $PS1 및 $HISTFILE(tty 장치의 기본 이름 포함)을 포함한 몇 가지 설정을 사용자 정의하겠습니다 .

이는 비교적 재현하기 쉽습니다.

tty=$(basename $(tty))
histdir=~/.hist
mkdir -p $histdir
export HISTFILE=$histdir/history.$tty
export PS1=$USER@'$PWD ['$tty'] ${?#0}$ '
exec /usr/bin/ksh

다른 이름으로 저장 ~/bin/screenshell하고 실행해 보세요 chmod +x ~/bin/screenshell. 이제 screen각 창을 실행하고 별도의 기록 파일을 가질 수 있습니다.

SHELL=~/bin/screenshell screen

예:

창 3

    vagrant@/home/vagrant [3] 127$ history
    1       history
    2       error
    3       history

창 4

    vagrant@/home/vagrant [4] $ history
    1       history
    vagrant@/home/vagrant [4] $ echo $HISTFILE
    /home/vagrant/.hist/history.4
    vagrant@/home/vagrant [4] $ tty
    /dev/pts/4

또 다른 방법은 exec ksh에서 실행 하는 .kshrc것이지만 실행이 반복되는 것을 방지하려면 일종의 테스트가 필요합니다.

관련 정보