„-Bash: ls: nie znaleziono polecenia”

30

Zainstalowałem najnowszą aktualizację do OS X Lion (10.7). Po tym, mój terminal nie rozpozna normalnych poleceń. Napisałem lsi dostałem:

-bash: ls: command not found

Pomyślałem, że spróbuję dodać usr / bin do mojej ścieżki, ale nie mogę znaleźć pliku .bash_profile, aby go edytować, ponieważ pisanie edit .bash_profilenie działa. Nie mogę ustawić Findera, aby wyświetlał wszystkie pliki, ponieważ mój terminal nie rozpoznaje poleceń niezbędnych do tego.

co muszę zrobić?

LuxuryMode
źródło
2
Znajdźmy ścieżkę i zobaczmy, co się trzęsie. export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/binwklej ciemną część (lub wpisz ją BARDZO UWAŻNIE) - ponieważ brakuje dwóch poleceń - coś uderzyło cię w ścieżkę. Przed zrobieniem czegoś dużego rozpoczęcie tworzenia kopii zapasowej może być rozsądne.
bmike
1
@bike dzięki! dodał to do .bash_profile i teraz wszystko działa. musiałem otworzyć .bash_profile w ten sposób: /usr/bin/vi ~/.bash_profilePołóż to jako odpowiedź i mogę zaakceptować!
LuxuryMode

Odpowiedzi:

42

Ponieważ w dwóch poleceniach brakuje czegoś „tupiąc” Twoją ścieżką.

Przed zrobieniem czegoś dużego rozpoczęcie tworzenia kopii zapasowej może być rozsądne.

Domyślna ścieżka w systemie Mac OS X 10.7 (Lion) wygląda mniej więcej tak:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Jeśli zresetujesz ścieżkę, wpisując powyższe w oknie powłoki, a następnie wpisanie export PATHpowinno naprawić to jedno okno.

Możesz więc zacząć od tego i sprawdzić, co jeszcze może być nie tak, i naprawić to w plikach początkowych lub w innym miejscu, w którym zostanie zdefiniowane.

To uszkodzenie jest prawie zawsze czymś, co musisz naprawić w plikach kropek. W przypadku bash, edycji i naprawy .bash_profilei / lub .bashrccofając ostatnią zmianę, wystarczy ustawić ponownie zmienną $ PATH. Zwykłym błędem jest przypisanie nowej ścieżki i nie odwołanie się do poprzedniej wartości zmiennej po prawej stronie znaku =

bmike
źródło
2
Dla mnie zapewnia to tymczasową poprawkę.
Etienne Low-Décarie
2
Dziękuję Ci! Podskoczyłem trochę, kiedy lsnie .bash_profiledziałałem po aktualizacji 😂
Adrian
Tak @Adrian błąd składniowy lub pusta ŚCIEŻKA może powodować intensywny niepokój 😅🤭🤬🔥
bmike
To dało tymczasową poprawkę. Musiałem powtórzyć wszystkie kroki po ponownym uruchomieniu CMD
Pawan
To nadal działa w systemie Mac OS 10.14.3
Stephen Romero
11

To powinno rozwiązać problem całkowicie i na stałe.

po pierwsze, wyeksportuj ścieżki środowiska za pomocą polecenia poniżej w terminalu.

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/b‌​in

teraz masz odpowiednie polecenia. (np. spróbuj ls. Zobaczysz, że polecenie działa). Ale dotyczy to tylko bieżącej sesji. Jeśli zamkniesz terminal i otworzysz nowy, pojawi się poprzedni problem. Aby wprowadzić tę zmianę na stałe, użyj polecenia poniżej,

przejdź do katalogu domowego

cd ~

otwórz plik .bash_profile w nano / vim (tutaj używam nano)

nano .bash_profile

Otworzy się edytor nano. W nowym wierszu wklej następujące;

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:$PATH

naciśnij klawisze „control” + „o”, aby zapisać (WriteOut) i „control” + „x”, aby wyjść z nano.

Wszystko gotowe! Teraz wypróbuj polecenia.

Kavin Ranawella
źródło
3

Wydaje mi się, że /etc/profilenie był uruchamiany przy starcie powłoki. Jest to globalny plik startowy odpowiedzialny za inicjowanie ŚCIEŻKI. Sprawdź, czy /etc/profileistnieje, czy można go odczytać i wykonać za pomocą następującego polecenia:

. /etc/profile

Jeśli go nie ma, musisz przywrócić go z kopii zapasowej lub innego komputera z zainstalowanym Lionem lub ponownie zainstalować Lion. Jeśli istnieje, ale nie jest wykonywalny, spróbuj użyć Narzędzia dyskowego do naprawy uprawnień do dysku.

Jeśli istnieje i jest wykonywalny (i zawiera jakiś kod), być może nie uruchamia się on w odpowiednim czasie lub skrypt startowy może go w jakiś sposób przesłaniać. Aby obejść ten problem , spróbuj . /etc/profileustawić ~/.bash_profilego na początku . Jeśli problem nadal występuje, dodaj go echo $PATHpo uruchomieniu, aby sprawdzić, czy ŚCIEŻKA została poprawnie zainicjowana. Jeśli tak, coś w twoim skrypcie to zmienia.

Oto domyślna zawartość /etc/profile:

# System-wide .profile for sh(1)

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] && . /etc/bashrc
fi

path_helperkonstruuje domyślną ŚCIEŻKĘ. Możesz spróbować uruchomić

unset PATH; /usr/libexec/path_helper -s

aby zobaczyć, co produkuje.

W każdym razie, jeśli problemu nie ma w skryptach startowych, skontaktuj się z pomocą Apple http://www.apple.com/support/contact/ lub zgłoś błąd na https://bugreport.apple.com / aby powiadomić Apple, że jest problem.

Chris Page
źródło
unset PATH; /usr/libexec/path_helper -spokazuje mi ŚCIEŻKĘ, która nie jest zawarta w moim /etc/profile. Jakieś sugestie?
Etienne Low-Décarie
Uruchomienie . /etc/profiletymczasowo rozwiązuje problem. Wkleiłem na samą górę ~/.bash_profile, ale wygląda na to, że to też nie działa.
Etienne Low-Décarie
1
Sprawdź stronę podręcznika użytkownika bash, aby uzyskać pełną listę plików startowych i kolejność ich wyszukiwania. Jeśli masz plik logowania, ma on na przykład pierwszeństwo przed profilem. Sprawdź inne pliki startowe.
Chris Page
1

Aby sprawdzić, czy rzeczywiście jest to problem z twoją ścieżką, jaki jest tego wynik /bin/ls?

Jeśli to działa, powinieneś przywrócić swoją ścieżkę do /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin, możesz na przykład użyć VIczyjej ścieżki to (na moim Macu) /usr/bin/vi.

Cedric H.
źródło
0

Myślałem o podzieleniu się błędem, który doprowadził mnie do tego błędu - przynajmniej w moim przypadku,

Kiedy dodałem nową PATHin ~/.bash_profile, zapomniałem dodać :$PATHna końcu ścieżki, które po prostu dodatkiem.

Użyłem tymczasowej poprawki (następująca komenda w terminalu), którą mistrzowie już tutaj wskazali, aby wrócić do bash_profile, ponieważ nie mogłem użyć komend vi, aby ją otworzyć.

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Po wejściu poprawiłem swój błąd.

(Dane negatywne mają znaczenie!)

AshlinJP
źródło
-1

Kiedy to się stało, próbowałem ustawić ścieżkę maven na zmienne środowiskowe. Więc właśnie przeniosłem mój plik .profile i .bash_profile do kosza i spróbowałem ponownie i zadziałało.

shahid610169
źródło
-1

Resetowanie terminala będzie działać. Zresetuje twoje podstawowe konfiguracje.

Zresetuj terminal. W górnej nawigacji przejdź do Shell >> Resetuj.

wprowadź opis zdjęcia tutaj

Ashish Vitthal Dalvi
źródło
1
Jak zresetowanie terminala rozwiązuje problem bash?
nohillside
-2

Wygląda na to, że zmienna PATH jest uszkodzona. Sprawdź, czy przypadkiem modyfikujesz zmienną PATH w swoim skrypcie, lub po prostu sprawdź PATH, mówiąc echo $ PATH, i możesz się upewnić, czy nic nie jest uszkodzone.

Nauman
źródło
-3

możesz wyeksportować ścieżkę w następujący sposób:

export PATH = $ PATH: / bin: / usr / local / bin

pravin
źródło
3
Witamy, aby zapytać inaczej! To pytanie ma już zaakceptowaną odpowiedź, a twoja odpowiedź nie różni się zasadniczo od zaakceptowanej odpowiedzi. Zapoznaj się z poniższymi często zadawanymi pytaniami, jak udzielić dobrej odpowiedzi: apple.stackexchange.com/help/how-to-answer
fsb