나는 보았다기존 문제그 메모에서 대답은 대화식 쉘을 엉망으로 만들고 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"