하나의 명령이 실행될 때마다 다른 명령이 먼저 실행될 수 있도록 bash에 콜백 / 후크를 할당 하시겠습니까?


3

달리기 ssh(또는 scp또는 lftp) 할 때마다 gpg-connect-agent updatestartuptty /bye먼저 달리기를 원합니다 . (이건 긴 이야기다.)

현재 내 .bashrc에 함수가 정의되어 있습니다.

ssh()
{
  gpg-connect-agent updatestartuptty /bye >/dev/null 2>&1
  $(which ssh) "$@"
}

이것은 잘 작동하지만 ssh가 이미 다른 것과 비슷한 별칭을 가진 다른 시스템에서 사용되는 경우 이식성 문제가 발생할 수 있다고 생각합니다.

명령 자체 ssh를 재정의하지 않고 사전 실행 "콜백"을 정의 할 수있는 방법이 ssh있습니까? ( trap DEBUG모든 명령 전에 주어진 명령을 실행하는 데 사용할 수 있다는 것을 알고 있지만 필요한 명령으로 만 제한하고 싶습니다.)


다시 설정 해야하는 것처럼 이식 할 수 없습니다. 또 다른 옵션은 ssh를 스크립트에 대한 심볼릭 링크로 만드는 것이지만 아마도 모든 종류의 문제가 발생할 것입니다. 그러나 당신은 어떤면에서 독립적 일 것입니다.
Seth

귀하의 질문을 이해하지 못하지만 실행 \ssh하면 별칭 세트를 재정의하고 원래 명령을 사용하고 있습니다. 따라서 할 수있는 일은 1. 함수와 다르게 겹치지 않도록 함수를 다르게 호출하는 것입니다. 2. ssh함수 에서 호출을\ssh
Anon

@ Seth : bash에 내장 명령 실행 콜백 메커니즘이 있는지 묻고 있습니다. 콜백 설정은 단순히 같은 이름의 함수로 명령을 재정의하는 것보다 방해가되지 않는다는 아이디어입니다. 별도의 스크립트 파일이 필요하지 않습니다. @Anon :``앞에 붙는 것은 별칭을 재정의하지만 기능은 무시합니다.
Ryan Lue

답변:


1

대신 다음과 같이 작성하는 것이 좋습니다.

ssh()
{
  gpg-connect-agent updatestartuptty /bye &>/dev/null
  command ssh "$@"
}

자세한 내용 help command은 참조하십시오.

그리고 다른 "사전 콜백 메커니즘"은 없습니다. 있다면, 당신이하고있는 것은 기본적으로 "그것"입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.