각 명령 후에 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에서 실행하는 것이지만 .kshrcexec-loop를 방지하려면 일종의 테스트가 필요합니다.

관련 정보