명령 행이 실행될 때마다 bash 스크립트를 실행하십시오.


9

저는 새로운 Ubuntu / Linux 사용자입니다. 위의 제목으로 질문하고 싶습니다.

예를 들어 bash 파일이 ./script있는데 명령 줄을 입력하면 자동으로 실행되도록하고 싶습니다. 명령 줄 pwd./script실행하면가 실행됩니다. 다음 명령 줄 ls -la을 입력 ./script하면가 다시 실행됩니다.


4
우리는 물어볼 수 있습니다 : 당신은 각각의 모든 명령 유형 에 대해 어떤 종류의 행동을하려고 합니까? 대화식으로 입력 한 사용자 만 사용해야합니까? 또는 스크립트의 명령에 대해서도? 그리고 ssh 위에 입력 된 명령은 어떻습니까? 이것은 XYProblem 일
Olivier Dulac

답변:


13

PROMPT_COMMAND변수 를 설정해야 합니다. 보낸 사람 man bash:

PROMPT_COMMAND
              If set, the value is executed as a command prior to
              issuing each primary prompt.

예를 들어, /tmp/PC명령이 실행될 때마다 현재 날짜를 기록합니다 .

 $ PROMPT_COMMAND="date > /tmp/PC"

1
그래, 나는 그것을 얻었다.. 아주 멋진 해결책. (upvoted)
Ender Phan

1
이것은 잘못이다. 명령 echo $(date)은 선언시 실행되므로 항상 같은 시간을 표시 (저장)합니다.
heemayl

@heemayl : 물론 맞아요, 나는 그것을 고정
ARKADIUSZ Drabczyk을

@ lộcphan이 답변 중 하나를 통해 문제를 해결 한 경우 잠시 시간을내어 왼쪽의 확인 표시를 클릭하여 수락하십시오 . 그러면 질문이 답변 된 것으로 표시되며 Stack Exchange 사이트에 감사가 표현되는 방식입니다.
terdon

@heemayl : 왜? ...
Arkadiusz Drabczyk

11

PROMPT_COMMAND환경 변수를 찾고 있다면이 변수의 값은 다음 프롬프트를 표시하기 직전에 터미널에 주어진 각 명령이 실행 된 후 명령으로 실행됩니다.

예를 들어 다음과 같이 설정하십시오.

export PROMPT_COMMAND='/path/to/script'

/path/to/script먼저 스크립트를 실행 파일로 만드십시오 .

이제 각 명령 후에 스크립트가 실행됩니다.

참고로 변수를 내 보내지 않으려면 환경 변수 대신 쉘 변수로 만드십시오 export.

PROMPT_COMMAND='/path/to/script'

보낸 사람 man bash:

PROMPT_COMMAND 
If set, the value is executed as a command prior to issuing each primary prompt.

나는 그것을 얻었다, 당신의 도움을 주셔서 대단히 감사합니다 :) (upvoted btw)
Ender Phan

왜 사용하고 export있습니까?
Arkadiusz Drabczyk

@ArkadiuszDrabczyk export는 변수 PROMPT_COMMAND를 환경 변수로 만들 것입니다. 즉, 변수는 현재 쉘의 모든 자식 프로세스 (예 : 서브 쉘)에서 사용할 수 있습니다. 현재 쉘 세션 (쉘 변수) 내에서만 제한하려면 제거하십시오 export.
heemayl

5
@heemayl : 여기서 IMO export는 좋은 방법이 아닙니다. PROMPT_COMMAND대화식 쉘 시작 파일에서만 설정해야하며 환경에서는 보이지 않아야합니다.
Arkadiusz Drabczyk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.