실행 파일에 대한 주문형 설치 래퍼 기능

실행 파일에 대한 주문형 설치 래퍼 기능

다음 기능을 올바르게 작동시키는 방법

# Install git on demand
function git()
{
    if ! type git &> /dev/null; then sudo $APT install git; fi
    git $*;
}

함수 git $*대신 호출로 ?/usr/bin/gitgit()

답변1

이와 같이:

# Install git on demand
function git()
{
    if ! type -f git &> /dev/null; then sudo $APT install git; fi
    command git "$@";
}

내장된 command억제 기능 조회. 또한 단어가 아닌 인수(예: 공백이 있는 파일 이름)를 올바르게 처리하기 때문에 귀하의 $*것을 으로 변경했습니다 ."$@"

또한, 그렇지 않으면 눈에 띄기 때문에 -f함수에 매개변수를 추가했습니다 .type

실패 와 같은 문제가 발생할 경우 apt-get install어떻게 해야 할지 생각해 볼 수 있습니다.

답변2

아니면 어떤 명령이라도 실행할 수 있는 보다 일반적인 기능일 수도 있습니다. 이 경우 "-f"는 "-t"로 대체될 수 있습니다. 기능과의 충돌은 발생하지 않습니다.

function runcmd()
{
  if ! type -t $1 >/dev/null; then
    pkg=$(apt-file search -x "bin.*$1\$" | cut -d: -f1)
    sudo apt-get install $pkg
  fi
  eval "$@"
}

물론, "apt-get install" 오류는 처리되어야 합니다.

관련 정보