2 votes

Trouver macOS : "relative path not safe", pourquoi ?

J'exécute ce qui suit dans le cadre de ma construction Travis CI sur macOS pour supprimer tous les non .git les répertoires :

$ if [ "${TRAVIS_OS_NAME}" = "osx" ]; then find /usr/local/Homebrew \! -regex ".+\.git.+" -delete; fi

Le résultat obtenu est le suivant :

find: -delete: /usr/local/Homebrew: relative path potentially not safe

Pourquoi mon /usr/local/Homebrew Le chemin d'accès est-il considéré comme un chemin d'accès relatif ?

5voto

Kamil Maciorowski Points 57004

De cette réponse sur Unix et Linux SE :

macOS find est basé sur une ancienne version de FreeBSD find dont -delete ne supprimerait pas les fichiers donnés en argument.

[ ]

C'était a changé dans FreeBSD en 2013 mais le changement n'a apparemment pas été répercuté sur macOS.

Plus précisément, dans votre cas /usr/local/Homebrew est donné comme argument à find ; par conséquent -delete ne peut pas retirer cet objet précis. Le message relative path potentially not safe est cependant trompeur. En effet, les message lié nous éclaire sur ce qui se passe sous le capot. On peut également y lire ce qui suit :

La suppression des noms de chemin donnés en argument peut être évitée sans message d'erreur en utilisant la fonction en utilisant la fonction -mindepth 1 ou en changeant de répertoire et en passant . a comme argument à find .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X