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


22

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

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

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


2
이것은 XY 문제 이거나 매우 이상한 생각입니다. 실제로 달성하려는 것은 무엇입니까?
jasonwryan

bash.rc의 별칭?
moonbutt74

답변:


29
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

2
@ 존 아니오 export. 설정 만하면됩니다 (또는 위에 표시된 것처럼 추가).
PSkocik

깔끔하지만, 어떻습니까?
moonbutt74

2
@ moonbutt74 모든 명령 앞에 == 모든 명령 뒤에 + bash 세션 시작시
PSkocik

@PSkocik 나는 그것이 이미 환경 변수인지, 빠른 에코 명령으로 그것이 그것이 무엇인지 궁금했다. 이것은 내가 찾던 것과 정확히 일치합니다
John

@John 기본적으로 환경 변수가 아닌 쉘 변수 일뿐입니다.
PSkocik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.