Cygwin / bash의 유사 Sudo 같은 추가 인수가 있습니다. sudo -u user bash

sudo 자체가 아니라 sudo 명령이 작동하도록 허용하는 방법이 필요 합니다 .

sudo 줄에는 다음과 같은 추가 인수가 있습니다.

sudo -u user bash -c 'uptime'

위의 링크에서 bash를 사용하면 출력을 얻습니다.

/usr/bin/sudo: line 3: -u: command not found

어쨌든 주위에 있습니까? 아마도 -c 대신 따옴표에서 실행되도록하십시오.



답변

전송 된 명령이 항상 정확하게

sudo -u user command...

그러면 가짜 sudo 스크립트는 처음 두 가지 인수를 버릴 수 있습니다.

#!/bin/bash
shift 2
exec "$@"

그렇지 않으면 약간의 인수 파싱을 수행해야합니다.

#!/bin/bash
while getopts :u: opt
do
  # normally you'd process options and arguments here,
  # but in this case just ignore them
done
shift $((OPTIND-1))  # throw out processed options and arguments
exec "$@"

getopts더 이상 없을 때까지 명령 행 옵션 및 인수를 읽고 리턴합니다. man bash명령 행 인수를 처리하는 방법에 대한 자세한 내용을 보려면 bash (1) ( ) 에서 읽을 수 있습니다 .


답변

이것은 내가 babun에서 Ansible을 실행하기 위해 sudo에 사용한 것입니다.

#!/bin/bash
count=0

for var in "$@"
  do
    (( count++ ))
  done

shift $count
exec "$@"