
나는 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
exec-loop를 방지하려면 일종의 테스트가 필요합니다.