bash (Terminal.app)가 이전 세션의 기록을 기억하게하는 방법은 무엇입니까?


11

직장에서 내 컴퓨터에서 내 bash 쉘은 새 터미널을 방금 연 경우에도 이전 세션의 기록을 기억합니다.
집에있는 내 컴퓨터에서는 이런 일이 발생하지 않습니다.
두 컴퓨터에 동일한 OS 10.6.8이 있고에 기록 관련 설정이 없습니다 .bash_profile.
내 컴퓨터에서 어떻게 설정하면 여러 세션의 기록을 기억할 수 있습니까?



답변:


11

bash에게 히스토리 파일을 보관할 위치와 보관할 줄 수를 알려줘야합니다.

# Set the location of your HISTFILE
echo "export HISTFILE=/Users/<USERNAME>/.bash_history" >> ~/.bash_profile

# Number of lines to keep (1000 in this example)
echo "export HISTFILESIZE=1000" >> ~/.bash_profile

# Set how many commands to keep in the current session history list
echo "export HISTSIZE=80" >> ~/.bash_profile

# Ignore commands that start with a space
echo "export HISTIGNORE=\"&:[ ]*:exit\"" >> ~/.bash_profile

3
기본적으로 모든 것이 불필요합니다. 기본 bash 구성 (적어도 Mac OS X에서)은 명령 기록을 활성화합니다.
Chris 페이지

키워드 / should /. 그의 기록을 기록하지 않으면 bash가 기록을 초기화 상태로 유지합니다.
Aaron Lake

2
단순히 해야 하지만, 의지 뭔가, 바로 이러한 변수에 어떤 값을 슬래 밍은 단지 실제 문제를 통해 도배하는 경우 기본 기록 동작을 억제하기 위해 수행되지 않는 한. 이 답변으로 문제가 해결되면 다른 문제가 발생하여 다른 문제가 발생하지 않도록 수정해야합니다.
Chris 페이지

이 설정을 구성 할 수 있지만 터미널에서 기록을 "활성화"하려는 경우 더 간단한 솔루션 / 응답을 찾았습니다. 그것은 나를 위해 잘 작동했습니다 apple.stackexchange.com/a/220667/243988 (macOS High Sierra를 사용하고 있습니다)
jpruizs

4

방금 비슷한 문제가 있음을 알았습니다. 고용주는 두 대의 Mac 만 가지고 있고 책상 에는 앉아 있지 않습니다 . 용납 할 수 없지만 다른 시간을위한 전투.

어쨌든 집에서 Mac Mini (MacBook Pro에서 마이그레이션)는 설정 .bashrc및 / 또는 후에도 작동하지 않았습니다 .profile. 그런 다음 내 ~/.bash_history파일이 루트에 의해 신비하게 소유 되었음을 발견했습니다 . 이것을해야했다 :

sudo -iu root
cd ~(myusername)
chown (myusername) .bash_history

(예, 적은 명령으로 수행 할 수 있음을 알고 있습니다. 습관.)

그런 다음 터미널을 종료하고 새 터미널을 시작했습니다. 우와! 이전에 잃어버린 모든 종류의 역사는 뒤로 물러났습니다. 정말 멋지다

이 글을 읽는 사람이 우연히이 곤경에 처했을 가능성 : 0.2 % 나는 다른 것을 지나치게 열성적으로 "고정"할 때 이것을 깨달았다.


4

나는이 문제가 있었고 나를 위해 일한 .bash_sessions_disable것은 내 사용자 폴더 ( ~/) 에 있는 파일을 만드는 것이 었습니다 .

기본적으로 OS X .bash_sessions는 각 세션 (내 경우에는 각 탭마다 하나씩)의 폴더에 기록 파일을 만듭니다 . 그리고 이러한 세션을 제대로 종료하더라도 OS X는 이전의 기록을 재생하지 않습니다 .bash_history.

를 만들면 .bash_sessions_disable이 동작이 비활성화됩니다.

touch ~/.bash_sessions_disable

세션 별 명령 기록 (기본 동작)을 비활성화하는 것은 요청하는 것과 반대입니다.
Chris Page

@ChrisPage 질문자가 세션 별 이력에 대해 질문하는 경우에만 옳습니다 ( "세션 전체의 기록 기억"). bash 세션 동작 비활성화 폴더 .bash_history아래에 기록을 유지하지 않고 단일 기록을 재생할 수 .bash_sessions/있습니다. 이것이 정답입니다.
Matt H

@MattH이 질문은 전혀 작동하지 않는 것 같아서 세션 별 기록 기능을 비활성화하는 것이 올바른 방향으로 가고 있지 않기 때문에 기록을 다시 작동시키는 방법을 묻습니다. 세션 별 히스토리 메커니즘에 버그가있는 경우 누군가 버그 보고서를 제출해야하지만,이를 끄는 것이 일반적으로 모든 사용자에게 맞다고 생각되는 답변은… 올바르지 않습니다. 일반적으로 잘 작동합니다. 자세한 내용은 다양한 답변에 대한 내 의견을 참조하십시오.
Chris 페이지

나는 처음에 주석을 달았을 때 이것을 다시 언급 했어야했다. 에 SHELL_SESSION_HISTORY설명 된대로 0 으로 설정 하여 세션 별 명령 기록 동작을 끌 수 있습니다 /etc/bashrc_Apple_Terminal.
Chris 페이지

1

Reddit 스레드의 대답은 저를 구했습니다.

bash_sessions가 실행되는 "후크"종료를 막는 것은 아마도 RVM 일 것입니다. .bash_profile에서 다음 줄을 주석 처리하면 작동합니다.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

0

나는 비슷한 문제가 있었으며 기록이 기록되지 않았다. 주어진 솔루션이 작동하지 않았지만 마침내 문제가 누락 된 .bash_history만큼 간단하다는 것을 알았습니다.

이 솔루션은 이동하는 것이었다 /home/[username]/과 파일을 추가 .bash_history하므로,

nano .bash_history

그런 다음 파일에 아무것도 입력하지 않으면 (생성되지 않음) 종료하고 저장하십시오. 이 후 히스토리가 정상적으로 작동하기 시작했습니다.


이렇게해도 문제가 해결되면 다른 문제가 발생하여 다른 문제를 피하기 위해 수정해야합니다. 기록 파일이 없을 때 Bash를 시작하면 파일이 생성됩니다. 생성하지 않거나 생성 할 수없는 경우 일부 쉘 시작 스크립트 또는 홈 디렉토리 권한에 문제가 있습니다. 예를 들어, apple.stackexchange.com/a/118764/6883
Chris Page
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.