터미널이 탭 / 창마다 별도의 기록을 유지하도록하려면 어떻게해야합니까?


13

Mac을 다시 시작하면 컴퓨터가 다시 시작될 때 다시 있기 때문에 종료되고 각 탭의 버퍼를 올바르게 저장합니다. 그러나 창 / 탭마다 명령 기록이 제대로 버퍼링되지 않습니다. 그것들은 모두 같은 버퍼입니다.

bash는 ~/.bash_history모든 터미널 에서 동일하게 사용하기 때문에이를 개선 하지 않는 방법 이라고 가정합니다 . 배쉬 또는 터미널을 만들려면 별도로 저장합니까?


이 게시물 @ Server Fault를 참조하십시오. 작업을 수행하는 방법이 설명되어 있습니다.
Mutant

답변:


7

당신은 당신의 이런 식으로 할 수 있습니다 .bashrc:

MYTTY=`tty`
HISTFILE=$HOME/.bash_history_`basename $MYTTY`

이렇게하면 홈 디렉토리에와 같은 별도의 기록 파일이 생성됩니다 .bash_history_ttys002. 새 터미널 창을 만들면 tty 이름에 해당하는 기록 파일이 사용되며, 일반적으로 터미널 창을 만드는 순서에 따라 결정됩니다.


감사합니다! 이것을 해결 된 것으로 표시합니다. 비록 OSX가 터미널을로드하는 방법에 달려 있지만 이것이 우리가 얻을 수있는 가장 가까운 느낌입니다.
Robert Sköld 2013

이것은 탭 당 가능합니까?
Joshua Muheim

각 탭은 별도의 tty 로그인이므로 작동해야합니다.
세스 노블

터미널은 이러한 유형의 동작을 명시 적으로 지원합니다. 새로운 터미널을 만들 때 터미널에 고유 ID를 할당하고 TERM_SESSION_ID 환경 변수를 통해 터미널 세션과 통신합니다. 재개를 위해 터미널을 복원 할 때 동일한 세션 ID도 복원하므로 프로그램이이를 사용하여 임의 상태를 복원 된 터미널과 연관시킬 수 있습니다. tty 대신 파일 이름의 일부로 이것을 사용하십시오.
Chris 페이지

@ChrisPage이 문제는 창 / 탭을 시작할 때마다 세션이 다르다는 것입니다. 따라서 별도의 기록을 작성하고 여러 세션에서 연결하지 않습니다.
르네 울러

5

나는 이것을 추가하여 이것을 구현했다.

export HISTFILE="$HOME/.bash_history_$TERM_SESSION_ID"
if [ ! -e $HISTFILE ]; then cp "$HOME/.bash_history" "$HISTFILE"; fi

~/.bash_profile파일에. 이제 터미널을 닫았다가 다시 열면 각 탭에 별도의 명령 기록이 복원됩니다. 또한 새 탭을 만들면 기본 기록이에서 초기화됩니다..bash_history

또한 Terminal앱이 종료와 다시 시작 사이에 열린 탭을 유지하도록하려면에서 옵션 "close windows when quitting app" (on Yosemite)이 비활성화되어 있는지 확인해야합니다 System Preferences -> General.


0

각 터미널 인스턴스에 대해 사용자 정의 $ HISTFILE을 설정할 수 있습니다.


각 터미널 탭 / 창에 대해 자동으로 수행하는 방법이 있습니까? 그리고 $HISTFILE컴퓨터가 다시 시작될 때 동일한 것을 사용하고 있는지 확인하십시오 .
Robert Sköld

1
예, 가능하지만 어떻게 다시 액세스 할 수 있습니까? 이전 히스토리 파일을 얻으려면 파일을 수동으로 저글링해야합니다.
EmmEff

@EmmEff 터미널은 이러한 유형의 동작을 명시 적으로 지원합니다. 새 터미널을 만들 때 터미널에 고유 ID를 할당하고 TERM_SESSION_ID 환경 변수를 통해 터미널 세션과 통신합니다. 재개를 위해 터미널을 복원 할 때 동일한 세션 ID도 복원하므로 프로그램이이를 사용하여 임의 상태를 복원 된 터미널과 연관시킬 수 있습니다.
Chris 페이지
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.