Jak zresetować Bash na Mac OSX, .bash_profile jest uszkodzony i bash już nie działa

17

Korzystam z MacBooka Pro z najnowszą wersją Mountain Lion.

Naprawdę potrzebuję pomocy, udało mi się jak uszkodzić mój .bash_profile (tak myślę), więc za każdym razem, gdy otwieram terminal, pojawia się błąd wymieniony poniżej.

-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

Nie jestem pewien, co się stało, nie mam sudo, cd ani żadnych normalnych poleceń. Jedynym sposobem, w jaki udało mi się dostać do dowolnego z głównych katalogów, jest przejście do polecenia folderu w wyszukiwarce i próba znalezienia pliku bezskutecznie.

Podsumowując, wydaje mi się, że utworzyłem plik, który może być przyczyną problemu, chciałem edytować plik .bash_profile, więc napisałem

sudo nano ./bash_profile

To otwiera nowy plik w nano, który, jak sądzę, został zapisany. Następnie otworzyłem prawdziwy plik .bash_profile, aby dodać ścieżkę do pliku node.js.

Jeśli mogę dostać się do pliku .bash_profile, myślę, że mogę go przywrócić na właściwe tory, ale nie mogę go znaleźć, czy powinienem ponownie zainstalować bash? Jeśli tak, to jak mam to zrobić na komputerze Mac, próbowałem użyć

brew install bash

do czego dochodzę

-bash: brew: command not found
Dziwny
źródło
Pierwszą rzeczą, którą spróbowałbym, jest zmiana na inną powłokę, aby móc rozwiązać problem: zobacz tutaj, jak to zrobić support.apple.com/kb/TA27005 . Powinno to umożliwić modyfikację / usunięcie szkodliwego pliku i zmianę powłoki z powrotem na bash.
Gjallar,
Dziękuję, próbowałem ponownie zainstalować bash, ale jedyne, co się zmieniło, to to, -bash: export: '/Users/rob/Applications/sbt/bin:': not a valid identifierco zniknęło. Jedyne, z czym się zmagam, to to, że pierwsza linia może być przechowywana. Zajrzałem do mojego .bash_profile, .profile i .bashrc, ale nic.
Strangeone
Ok, więc dodałem /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bindo mojego .bash_profile i wygląda na to, że naprawiłem bash, ale nadal pojawia się ten błąd. -bash: export: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin': not a valid identifierMasz jakieś pomysły?
Strangeone
Czy możesz spróbować: PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/go/bin:$PATH" # Make sure to use double quotes not single quotesI na nowej linii export PATH.
Gjallar,
Dziękuję, wygląda na to, że zadziałało. Czy mogę po prostu zapytać, dlaczego według ciebie to zadziała?
Strangeone

Odpowiedzi:

12

Wystarczy zebrać wszystkie moje komentarze, aby uzyskać odpowiedź:

Pierwszą rzeczą, którą powinieneś zrobić, to zmienić powłokę, w ten sposób możesz ustawić powłokę, która nie będzie ładować skryptów inicjujących bash ( .bashrc, .bash_profile) - jak to zrobić dla aplikacji terminalowej Mac OS X można zobaczyć tutaj: Wsparcie Apple

Teraz powinieneś być w stanie ponownie otworzyć terminal i użyć swojego ulubionego edytora wiersza poleceń, aby otworzyć .bash_profileplik (np. nanoLub vi):

W tym pliku musisz zresetować PATHzmienną używaną przez terminal, aby znaleźć programy, które może wykonać.

Można to zrobić za pomocą następujących dwóch wierszy:

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

Spowoduje to najpierw ustawienie katalogów, które chcesz mieć na ŚCIEŻCE, i wyeksportowanie ŚCIEŻKI, aby była dostępna dla wszystkich programów uruchomionych z tej powłoki (poprzez eksport).

Gjallar
źródło
21

⇧⌘. pokazuje ukryte pliki w oknach dialogowych plików. Możesz spróbować otworzyć ~ / .bash_profile za pomocą TextEdit i tymczasowo pozostawić pusty.

Lri
źródło
+1 za przydatny skrót klawiaturowy, którego nie znałem :)
Michel
Uwaga: .bash_profile znajduje się w twoim katalogu domowym (Users / [nazwa użytkownika] /. bash_profile
Amos
dzięki @Lri, uratowałem mój dzień!
Vicky_Vignesh
4

Miałem ten sam problem i właśnie znalazłem prostsze rozwiązanie:

/usr/bin/nano .bash_profile

usuń cały bałagan, a następnie zapisz plik

Fajar Ulin Nuha
źródło
Najlepsza odpowiedź. Łatwy i gwarantowany do pracy.
nikk wong
3

Wiem, że to stary wątek, ale chciałem zostawić tutaj moje rozwiązanie w nadziei, że ktoś inny będzie miał ten sam problem.

Kiedy uruchomiłem terminal z MacOS, mój użytkownik był w porządku, ale po zmianie na sudo nie mógł działać (polecenie nie znaleziono).

Skończyło się to na:

nano ~/.bashrc

Właśnie usunąłem ścieżkę, która spowodowała błąd. Zrestartowałem terminal i teraz wszystko działa dobrze.

mau
źródło
0

Niedawno odkryłem, że pliki w stylu DOS powodują problemy dla obu skryptów .bash * w OS-X. Muszę używać zakończeń plików DOS dla niektórych kodów współdzielonych z użytkownikami systemu Windows, więc jeśli edytuję plik .bash_profile w tym repozytorium git, otrzymuję wiele komunikatów o błędach podczas uruchamiania skryptu (przy logowaniu). Narzędzie dos2unix to naprawiło.

Rachunek
źródło
-1

Oprócz wspomnianego wcześniej pokazywania ukrytych plików i korzystania z edytora tekstu, istnieje również łatwiejszy sposób na otwarcie nowej powłoki bez zmiany domyślnej powłoki. Możesz kliknąć z wciśniętym klawiszem Alt aplikację Terminal i wybrać „Nowe polecenie ...”. Następnie wpisz „sh” w oknie dialogowym i uruchom je. Spowoduje to otwarcie powłoki innej niż bash i możesz tam edytować plik. W przyszłości dobrym pomysłem byłoby pozostawienie otwartej powłoki lub przetestowanie nowego .bash_profile przed wyjściem.

CortexCompiler
źródło