3 votes

Effacé le répertoire /usr/local/bin par erreur.

Je suis un peu novice en Unix. J'ai récemment commencé un tutoriel bash où j'ai créé un script bash hello world comme ceci :

#!/bin/bash
echo 'Hello World!'

ensuite, je l'ai déplacé dans /usr/local/bin en utilisant cette commande :

sudo mv hello.sh /usr/local/bin

maintenant, /bin sous /usr/local n'est plus un répertoire, mais un fichier, et en utilisant ls -l dessus, j'obtiens cette sortie :

MacBook-Pro-de-Omar:local omarnavarro$ ls
bin
MacBook-Pro-de-Omar:local omarnavarro$ ls -l
total 8
-rwxr-xr-x  1 omarnavarro  staff  32 Apr 11 19:27 bin
MacBook-Pro-de-Omar:local omarnavarro$ cat bin
#!/bin/bash
echo 'Hello world!'

Je comprends que /usr/local/bin fait partie de la variable $PATH, donc je crois qu'il devait y avoir beaucoup de commandes là-dedans. Est-ce que cela va beaucoup me affecter ? Comment puis-je restaurer les commandes qui étaient initialement dans /usr/local/bin quand c'était un répertoire. Je n'arrive pas à croire que j'ai fait une telle erreur !

6voto

Farinha Points 5518

La réponse canonique, bien sûr, est de restaurer /usr/local/bin à partir de votre dernière sauvegarde ...

La bonne nouvelle est que si cette commande mv a réussi et a créé un fichier appelé bin, alors /usr/local/bin n'existait pas déjà en tant que répertoire sur votre système, et vous n'avez rien perdu. Sinon, hello.sh aurait été déplacé dans le répertoire /usr/local/bin (qui était probablement l'intention du tutoriel), il ne l'aurait pas remplacé.

Ce n'est pas surprenant, car /usr/local/bin n'existe généralement pas sur les Macs tant que vous ou une application tierce ne le créez pas. Mais maintenant, vous avez appris la puissance impressionnante de la ligne de commande, vous savez pourquoi il est important de conserver de bonnes sauvegardes ;)

Si vous aviez endommagé /usr/bin, vous auriez besoin de réinstaller le système:

La bonne nouvelle est que la protection de l'intégrité du système (SIP) rend plus difficile l'altération des fichiers système avec sudo

PS: Un moyen facile d'éviter que le problème ne se produise est d'ajouter toujours un / à la fin si vous déplacez des fichiers vers un autre répertoire (ou de compter sur la complétion automatique qui fait la même chose): sudo mv hello.sh /usr/local/bin/. De cette façon, vous obtiendrez un message d'erreur si le répertoire cible n'existe pas.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X