sudo 없이 실행 파일 실행

sudo 없이 실행 파일 실행

Mine .zshrc현재 디렉터리나 현재 경로의 상위 디렉터리에 존재할 수도 있고 존재하지 않을 수도 있는 실행 파일을 검색하고 실행하는 명령을 생성합니다. 실행 파일이 있으면 찾는 논리가 있지만 실행하려고 하면 다음 오류가 발생합니다.

/Users/username/some/directory/executable_file을 사용하십시오.

function_name:15: 해당 파일 또는 디렉터리가 없습니다: /Users/username/some/directory/executable_file

다음 코드로 생성됩니다:

if [[ $current_path != / ]]
  then
    echo "Using $current_path/executable_file"
    "$current_path/executable_file $@"

그러나 경로를 복사하여 붙여넣거나 sudo로 함수를 실행하면 완벽하게 작동하므로 경로가 정확합니다. sudo -u스크립트에서 현재 사용자로 함수를 실행하려고 시도했지만 여전히 실패했습니다.

사용자가 수동으로 입력한 것처럼 또는 최소한 sudo 및 비밀번호 없이 실행 가능한 스크립트를 실행하려면 어떻게 해야 합니까?

답변1

이 줄을 둘러싼 인용문:

"$current_path/executable_file $@"

찾아서 실행할 항목(다양한 변수 확장 후)인 큰따옴표 사이의 모든 항목이 있음을 쉘에 알립니다.

가장 간단한 경우, 함수에 매개변수가 없으면 실행을 시도합니다.

"$current_path/executable_file "

$current_path/executable_file... 파일 자체가 존재 하더라도 뒤에 공백이 있기 때문에 실패할 수 있습니다.

매개변수를 전달하면 해당 파일이 존재할 가능성이 훨씬 줄어듭니다. 예:

"$current_path/executable_file arg1 arg2 arg3..."

$current_path변수의 확장을 보호하지만 실행 파일 이름이 다음 위치에서 끝날 수 있도록 따옴표를 다시 정렬합니다 .

"$current_path/executable_file" "$@"

관련 정보