대화형 셸에서 호출하지 않는 한 항상 sudo Askpass를 사용하세요.

대화형 셸에서 호출하지 않는 한 항상 sudo Askpass를 사용하세요.

나는 보았다기존 문제그 메모에서 대답은 대화식 쉘을 엉망으로 만들고 exec() 또는 유사한 것을 사용하는 응용 프로그램에서는 작동하지 않는 별칭 사용만을 지정합니다. 업그레이드가 어려워지기 때문에 sudo 실행 파일을 /usr/bin으로 옮기고 싶지는 않지만 다른 방법은 잘 모르겠습니다. 또한 쉘 스크립트에서 호출할 때 Askpass를 사용하고 싶습니다.

답변1

다음과 같은 경우 확인할 수 있습니다.현재 bash 인스턴스는 대화형입니다.. 그러나 이는 다른 쉘에서는 작동하지 않을 수 있습니다.

이제 에이전트 스크립트를 생성하면 시작 방법에 대한 결정을 캡슐화할 수 있습니다 sudo. 이름을 지정하세요 sudoAskpass.sh. 예를 들면 다음과 같습니다.

#!/bin/bash

BASH_PARAMETERS="$1"
shift

case "${BASH_PARAMETERS}" in
    *i*)
        sudo -A "$@"
        ;;
    *)
        sudo "$@"
        ;;
esac

exit $?

sudo그럼에도 불구하고 스크립트에서 매개변수는 $-비대화형 셸을 나타내기 때문에 별칭이 필요합니다 .

alias sudo='/path/to/sudoAskpass.sh "$-"'

답변2

나는 그것을하는 방법을 알아 냈습니다. 먼저 다음 내용으로 경로 sudo앞 어딘가에 호출되는 스크립트를 만듭니다./usr/bin

#!/bin/bash

/usr/bin/sudo -A "$@"

이는 인수를 실제 sudo에 전달하지만 -A 인수가 추가됩니다. 그런 다음 (또는 쉘의 시스템 전체 rc 파일)에서 /etc/zshrc별칭을 원래 sudo로 다시 설정합니다.

alias sudo="/usr/bin/sudo"

관련 정보