我正在尝试运行包含以下命令的 shell 脚本
$locate /etc/*.conf
查找 /etc/ 中以 .conf 结尾的所有文件,但每当我运行脚本时,命令行都会显示/etc/chrony.conf: Permission denied
.每当我在命令行中单独运行该命令时,它都会正常执行,但从脚本中它会失败。我已经使用 chmod 更新了脚本权限,尝试使用 sudo 权限运行脚本,在脚本本身内授予 sudo 权限,甚至以 root 身份登录,但它仍然显示权限被拒绝。
任何帮助表示赞赏,谢谢!
答案1
删除美元符号。
当您编写$locate
shell 时,它会查找名为“locate”的变量而不是可执行文件。
因为您没有名为“locate”的变量,所以您实际上正在调用:
/etc/*.conf
glob 扩展到与其匹配的所有文件,并且 shell 想要执行这些文件。您的情况中的第一个文件名是/etc/chrony.conf
,因为该文件不是可执行文件,所以它会引发错误。