이 예제에서 hey.sh
모든 bash 명령의 이름을 딴 스크립트를 호출 할 수 있습니까?
예를 들어 ls
hit 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