J'ai de grands projets et quelques scripts pour les compiler. Je ne peux pas ajouter tout le code ici, donc je vais essayer de simplifier le problème: dans la partie nettoyage, j'ai besoin de nettoyer le dossier nommé directory
qui contient un autre répertoire nommé innerDir
. J'ai cette commande bash pour le nettoyage directory
:rm -r -f ne supprime pas le dossier interne
clean:
rm -r -f directory
Lorsque le répertoire est un dossier que j'ai créé avec mkdir -p
au préalable. Quand je nettoie, je reçois cette erreur:
rm: cannot remove 'directory': Directory not empty
Mais quand j'essaie d'entrer directory
, je vois qu'il est vide. Donc, pour le débogage, j'ai modifié ma part cleanning être:
rm -r -f directory/*
find directory
rmdir directory
(il est supposé faire la même chose, mais ici je reçois aussi la chance de voir si tout le contenu de directory
a été vraiment supprimé).
Maintenant, j'obtiens cette erreur:
find: 'directory/innerDir': Permission denied
Il y a deux choses que peu claires pour moi ici:
(1). innerDir
a été créé avec makedir -p
avant la partie clening, sans aucune modification des autorisations de celui-ci plus tard dans le code. Pourquoi n'ai-je pas la permission de le supprimer?
(2). Si j'essaye de nettoyer à nouveau, le nettoyage réussit et je n'ai aucun problème de permission. Donc, si j'ai eu une erreur de permission la première fois que j'ai essayé de la supprimer, pourquoi ne l'aurais-je pas dans un deuxième temps?
Courez-vous vos commandes avec sudo? –
@RamanSailopal - no. Pourquoi ai-je besoin de courir avec sudo? – Rodrigo
J'utiliserai '-rm -r -f directory' dans la cible' clean'. Même si 'rm' échoue, make continuera. Juste une solution de contournement – dlmeetei