다음 명령이 포함된 쉘 스크립트를 실행하려고 합니다.
$locate /etc/*.conf
/etc/에서 .conf로 끝나는 모든 파일을 찾았지만 스크립트를 실행할 때마다 명령줄에 이라고 표시됩니다 /etc/chrony.conf: Permission denied
. 명령줄에서만 명령을 실행할 때마다 정상적으로 실행되지만 스크립트에서는 실패합니다. chmod를 사용하여 스크립트 권한을 업데이트하고, sudo 권한으로 스크립트 실행을 시도하고, 스크립트 자체 내에서 sudo 권한을 부여하고, 심지어 루트로 로그인했지만 여전히 권한이 거부되었다고 표시됩니다.
도움을 주시면 감사하겠습니다. 감사합니다!
답변1
달러 기호를 제거하세요.
쉘을 작성할 때 $locate
실행 파일 대신 "locate"라는 변수를 찾습니다.
"locate"라는 변수가 없기 때문에 실제로 다음을 호출합니다.
/etc/*.conf
glob은 일치하고 쉘이 실행하려는 모든 파일로 확장됩니다. 귀하의 경우 첫 번째 파일 이름은 입니다 /etc/chrony.conf
. 파일이 실행 가능하지 않기 때문에 오류가 발생합니다.