새 터미널 창의 명령 기록에는 무엇이 있나요?

새 터미널 창의 명령 기록에는 무엇이 있나요?

터미널 창(Gnome Terminal 3.6.2)을 열고 명령(예: )을 입력한 echo "hello"다음 새 터미널 창을 열고 해당 명령을 입력하면 <Ctrl>Rhello기록에서 해당 명령을 찾아낼 수 있을 것으로 예상할 수 있습니다.

(reverse-i-search)`':그런데 새로 입력한 명령이 프롬프트 에 나타나지 않습니다 .

그러나 일부 명령은일부단말기하다검색에 표시됩니다.

그렇다면 내 Linux(Mint 17)는 어떤 터미널의 명령이 다른 터미널의 검색 기록에 표시되어야 하는지 어떻게 결정합니까?

답변1

터미널 앱 자체는 설명하는 기능과 아무 관련이 없습니다. 터미널이 하는 일은 텍스트 입력과 출력뿐이고 나머지는 터미널에서 수행된다는 점을 이해하는 것이 매우 중요하고 유용합니다.껍데기. 터미널은 단순히 키 입력을 터미널에서 실행 중인 프로그램으로 리디렉션하고 해당 프로그램에서 생성된 출력을 표시하며 터미널 크기 조정에 대해 프로그램에 알릴 수 있습니다. 동작을 변경하려면 무엇을 구성해야 하는지 알아야 하므로 이를 이해하는 것이 중요합니다.

대부분의 경우 Linux의 기본 셸은 다음과 같습니다.세게 때리다, 그건세게 때리다Ctrl-R 및 터미널 창에서 수행하는 기타 모든 작업에 반응하는 사람.

당신이 말하는 기능은 bash 기록입니다. Bash가 기록을 읽고 쓰는 방법과 시기에는 다양한 옵션이 있습니다. 기본적으로 bash는 셸을 종료할 때 기록 파일에 기록을 추가하므로 한 셸에 입력하면 이 명령은 다른 셸의 기록에 나타나지 않습니다.

다음을 추가하면 각 명령을 입력한 후 저장할 수 있습니다.

export PROMPT_COMMAND="history -a"

~/.bashrc 파일에.

각 명령 후에 다시 로드할 수도 있습니다.

export PROMPT_COMMAND="history -a; history -r"

하지만 각 콘솔을 특정 작업 전용으로 지정하고 종료하기 전에 해당 특정 작업의 기록을 유지하는 것이 더 합리적이기 때문에 이 방법을 권장하지 않습니다.

답변2

귀하가 Mint를 사용하고 있으므로 bash쉘로 실행 중이라고 가정합니다.

다른 창에서 최근에 입력한 명령이 보이지 않는 이유는 bash현재 실행 중인 프로세스의 기록 목록이 메모리에 유지되고, 세션 간 기록을 저장하기 위해 다른 기록 목록이 디스크에 유지되기 때문입니다.

대화형 bash셸이 시작 되면 ~/.bash_history실행 중인 셸 프로세스의 런타임 기록 목록으로 기록 파일(기본적으로)을 읽어옵니다. 새 명령을 입력하면 해당 명령은 디스크의 기록 파일이 아닌 프로세스의 기록 목록에만 추가됩니다.

마찬가지로 bash프로세스는 종료되기 전에 디스크의 기록 파일에 기록 목록을 기록합니다.

한 터미널 창(T1)의 다른 창(T2)에서 명령에 액세스하려면 다음을 수행할 수 있습니다.

T1> history -a  # append history lines from this session to the history file

T2> history -r  # read the history file and append contents to the history list

다른 콘솔에서 위 명령을 실행한 후 bashT2의 기록 목록에서 T1의 명령을 찾을 수 있습니다.

bash기록 목록 동작에 영향을 미칠 수 있는 환경 변수와 옵션이 많이 있습니다 . 내장 명령 에서 bash자세한 내용을 찾아 보세요 help. help history맨페이지 bash( man bash) 및배쉬 참조 매뉴얼.

관련 정보