
Linux "sudo: cd: command not found". Przyczyny i rozwiązanie
Problem, który ostatnio napotkałem, jest bardzo prosty do obejścia i dlatego, to nie podanie jego rozwiązania jest głównym przyczynkiem do powstania tej notatki, a raczej nauka (choć dla wielu pewnie elementarna) z tego problemu płynąca. Ściślej mówiąc, chodzi i błąd zwieńczony komunikatem: "sudo: cd: command not found".
W jakich okolicznościach napotkałem ten problem?
Zapragnęło mi się wejść w konsoli do katalogu /root. Oczywiście nie możemy zrobić tego na uprawnieniach zwykłego użytkownika, więc przyszło mi do głowy użycie polecenia sudo:bash: cd: /root: Brak dostępu
$ sudo cd /root
[sudo] password for user:
sudo: cd: command not found
Co jest przyczyną problemu?
Może trochę wstyd się przyznawać, ale odpowiedź nie przyszła mi od razu do głowy, a musiałem dopiero jej poszukać u innych źródeł. Otóż zasadnicza różnica pomiędzy poleceniem sudo a poleceniem cd, pomijając oczywiście różnicę ich przeznaczeń, leży w ich naturze. Polecenie sudo jest programem, czyli wykonywalnym plikiem binarnym, zaś polecenie cd, jest poleceniem wbudowanym w shell'a, czyli nieposiadające materialnej postaci pliku. Dlatego więc otrzymujemy komunikat, o tym, że dla sudo komenda cd nie może zostać odnaleziona, ponieważ sudo próbuje wykonać plik binarny będący programem, a w tym wypadku taki nie istnieje.Sądzę, że na uświadomienie sobie tej różnicy, nigdy nie jest za wcześnie, bo daje ona bardziej świadomy ogląd na to czym się posługujemy.
A jak obejść ten problem?
Najprościej oczywiście po prostu zalogować się na root'a i dopiero potem przejść do katalogu wymagającego takich uprawnień. Użyjemy do tego polecenie sudo su:# cd /root
~#
Komentarze (1)