읽기 전용 PROMPT_COMMAND와 함께 기록 명령을 사용하는 방법은 무엇입니까?

읽기 전용 PROMPT_COMMAND와 함께 기록 명령을 사용하는 방법은 무엇입니까?

나는 때때로 PROMPT_COMMAND내가 제어하지 않고 어딘가에 있는 호스트 에 로그인합니다 readonly. 어떤 방법이 있나요?이 문제를 해결하려면 다음을 실행하세요.history주문하다그래도, 예를 들어 PS1?를 사용해 보았습니다. 모든 프롬프트가 인쇄 PS1='$(history -a; history -c; history -r; echo finished)'되지만 finished작동하지 않는 것 같습니다.

  1. 동일한 호스트에서 두 개의 터미널 A와 B를 엽니다.
  2. 터미널 A에서 명령을 실행하십시오 a.
  3. 터미널 B에서 명령을 실행하십시오 b.
  4. B 단자를 두 번 누릅니다 .

호스트가 있는 곳에서는 PROMPT_COMMAND='history -a; history -c; history -r;'터미널 B가 표시됩니다 a. PS1그것으로 시작하는 호스트 에서는 $(history -a; history -c; history -r; echo finished)두 터미널을 모두 열기 전에 실행되는 명령이 표시됩니다. 분명한 이유는in 명령은 PS1서브쉘에서 실행됩니다.

또 다른 옵션은 전역 RC 파일을 완전히 우회하는 것입니다.

bash --rcfile ~/.bashrc

그러나 표준 값의 사용을 우회 PROMPT_COMMAND하는 것이 가능합니다 .시스템 관리자가 승인하지 않음정책상의 이유로.

답변1

신호 처리기 내에서 기록 명령을 실행할 수 있으므로 하위 쉘이 필요하지 않습니다. 그런 다음 PS1적절한 신호를 보냅니다.

trap 'history -a; history -c; history -r;' USR1
export PS1='$(kill -USR1 $$)'"$PS1"

관련 정보