나는 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
것이지만 실행이 반복되는 것을 방지하려면 일종의 테스트가 필요합니다.