[unix] 모든 bash 명령 후에 스크립트를 호출하는 방법

이 예제에서 hey.sh모든 bash 명령의 이름을 딴 스크립트를 호출 할 수 있습니까?

예를 들어 lshit enter 및 ls runs를 입력 한 다음 hey.sh실행합니다.

그런 다음 cd .. (또는 다른 명령)을 입력 하고 cd runs을 hey.sh실행합니다.



답변

PROMPT_COMMAND+="hey.sh;"

PROMPT_COMMAND 설정되면 값은 각 기본 프롬프트를 실행하기 전에 명령으로 실행됩니다.


참고 : 환경 변수와 셸 변수

기본적으로 PROMPT_COMMAND입니다 하지 환경 변수 . 그것은 단지 쉘 변수 입니다.

두 변수 유형 모두 동일한 방식으로 액세스 "$variable*"되지만 ( ) 환경 변수 는 자식 프로세스에 의해 상속되지만 쉘 변수 는 그렇지 않습니다.

규칙은 환경 변수 + 쉘을 구성하는 쉘 변수 (PROMPT_COMMAND가 쉘을 구성 함 )를 대문자로 사용 하지만 다른 유형의 변수는 소문자로 유지합니다.

에서 bash는 , 당신은 할 수 있습니다 :declare -p 변수가 수출 (= 인 환경 변수를)할지 여부를 알아 :

$ declare -p PATH
declare -x PATH=... #-x means it's exported
$ declare PROMPT_COMMAND
declare -- PROMPT_COMMAND=... #no -x so just a shell variable


답변