Comment réinitialiser Bash sur Mac OSX, .bash_profile corrompu et bash ne fonctionne plus

17

Je suis sur un MacBook Pro, exécutant la dernière version de Mountain Lion.

J'ai vraiment besoin d'aide, j'ai réussi à endommager mon .bash_profile (je pense) pour que chaque fois que j'ouvre le terminal, j'obtienne l'erreur listée ci-dessous.

-bash: export: `/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin': not a valid identifier
-bash: export: `/Users/rob/Applications/sbt/bin:': not a valid identifier
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
env: bash: No such file or directory
-bash: tar: command not found
-bash: grep: command not found
-bash: cat: command not found
-bash: find: command not found

Je ne sais pas ce qui s'est passé, je n'ai pas de sudo, cd ou toute commande normale. La seule façon dont j'ai pu accéder à l'un des répertoires principaux est d'utiliser la commande go to folder dans le Finder et d'essayer de trouver le fichier en vain.

Pour couronner le tout, je pense que j'ai créé un fichier qui pourrait être à l'origine du problème, je voulais modifier le .bash_profile alors j'ai tapé

sudo nano ./bash_profile

Cela ouvre un nouveau fichier en nano qui, je pense, a ensuite été enregistré. Après cela, j'ai ouvert le vrai .bash_profile à ajouter dans le chemin d'accès pour node.js.

Si je peux accéder au .bash_profile, je pense que je peux le remettre sur la bonne voie mais je ne le trouve pas, dois-je réinstaller bash? Si oui, comment pourrais-je le faire sur un Mac, j'ai essayé d'utiliser

brew install bash

auquel j'arrive

-bash: brew: command not found
Strangeone
la source
La première chose que j'essaierais serait de changer de shell pour pouvoir résoudre le problème: voyez ici comment faire cela support.apple.com/kb/TA27005 . Cela devrait vous permettre de modifier / supprimer le fichier incriminé et de redéfinir le shell sur bash.
Gjallar
Merci, j'ai essayé de réinstaller bash mais la seule chose qui a changé est qu'elle -bash: export: '/Users/rob/Applications/sbt/bin:': not a valid identifiera disparu. La seule chose avec laquelle je me bats, c'est que la première ligne pourrait être stockée, j'ai regardé dans mon .bash_profile, .profile et .bashrc mais rien.
Strangeone
Ok donc j'ai ajouté /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/binà mon .bash_profile et il semble avoir corrigé bash mais j'ai toujours cette erreur -bash: export: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin': not a valid identifierDes idées?
Strangeone
Pouvez-vous essayer ce qui suit: PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin:$PATH" # Make sure to use double quotes not single quotesEt sur une nouvelle ligne export PATH.
Gjallar
Merci, cela semble avoir fonctionné. S'il vous plaît, puis-je simplement vous demander pourquoi vous pensiez que cela fonctionnerait?
Strangeone

Réponses:

12

Juste rassembler tous mes commentaires pour une réponse:

La première chose que vous devez faire est de changer le shell, de cette façon, vous pouvez définir un shell qui ne chargera pas les scripts init bash ( .bashrc, .bash_profile) - comment faire pour l'application terminal Mac OS X peut être vu ici: Assistance Apple

Vous devriez maintenant pouvoir ouvrir à nouveau un terminal et utiliser votre éditeur de ligne de commande préféré pour ouvrir le .bash_profilefichier (par exemple nanoou vi):

Dans ce fichier, vous devez réinitialiser votre PATHvariable qui est utilisée par le terminal pour trouver les programmes qu'il peut exécuter.

Cela peut être fait avec les deux lignes suivantes:

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH" # Make sure to use double quotes not single quotes And on a new line 
export PATH

Cela définira d'abord les répertoires que vous souhaitez avoir sur votre PATH et exportera ce PATH pour le rendre disponible à tous les programmes démarrés à partir de ce shell (via l'exportation).

Gjallar
la source
21

⇧⌘. affiche les fichiers cachés dans les boîtes de dialogue de fichiers. Vous pouvez essayer d'ouvrir ~ / .bash_profile avec TextEdit et le rendre temporairement vide.

Lri
la source
+1 pour le raccourci clavier utile que je ne connaissais pas :)
Michel
note: .bash_profile est dans votre répertoire personnel (Utilisateurs / [nom d'utilisateur] /. bash_profile
Amos
merci @Lri, sauvé ma journée!
Vicky_Vignesh
4

Je courais sur le même problème, et je viens de trouver une solution plus simple:

/usr/bin/nano .bash_profile

supprimez tous vos dégâts, puis enregistrez le fichier

Fajar Ulin Nuha
la source
Meilleure réponse. Travail facile et garanti.
nikk wong
3

Je sais que c'est un vieux fil, mais je voulais juste laisser ici ma solution dans l'espoir que quelqu'un d'autre se retrouve avec le même problème.

Lorsque j'ai exécuté le terminal à partir de MacOS, cela n'allait pas avec mon propre utilisateur, mais lorsqu'il a été remplacé par sudo, cela ne pouvait pas fonctionner (commande introuvable).

J'ai fini par le réparer avec:

nano ~/.bashrc

Je viens de supprimer le chemin qui provoquait l'erreur. Redémarrage du terminal et tout fonctionne bien maintenant.

Mau
la source
0

J'ai découvert récemment que les fichiers de style DOS causent des problèmes pour les deux scripts .bash * dans OS-X. Je dois utiliser des terminaisons de fichiers DOS pour du code partagé avec les utilisateurs de Windows, donc si je modifie .bash_profile dans ce dépôt git, j'obtiens beaucoup de messages d'erreur lors de l'exécution du script (à la connexion). L'utilitaire dos2unix l'a corrigé.

Facture
la source
-1

En plus de l'affichage des fichiers cachés et de l'utilisation d'un éditeur de texte mentionnés précédemment, il existe également un moyen plus simple d'ouvrir un nouveau shell sans changer votre shell par défaut. Vous pouvez alt-cliquer sur l'application Terminal et choisir "Nouvelle commande ...". Tapez ensuite "sh" dans la boîte de dialogue et exécutez-le. Cela ouvrirait un shell non bash et vous pourriez y éditer le fichier. À l'avenir, ce serait une bonne idée de garder un shell ouvert ou de tester l'exécution du nouveau .bash_profile avant de quitter.

CortexCompiler
la source