cdjest wbudowaną powłoką. sudodziała tylko z plikami wykonywalnymi. Możesz to zrobić, sudo sh -c 'cd dirname'ale gdy tylko powłoka zostanie zamknięta, nastąpi powrót do katalogu, w którym zacząłeś. Jeśli powiesz, co chcesz osiągnąć, pomogę ci znaleźć sposób, aby to zrobić.
Ale sudo pwdczy też by nie działało? (I zawsze zorientowali, że sudo cdma pracę, ale nie jesteś tylko widząc wynik po sudozwrotów. Ale to był tylko dzikie przypuszczenie. Może ani cdnie pwdsą w rzeczywistości wbudowane w Basha na Mac. Bieganie which cdjest rzeczywiście mi dać rezultaty. Bieg sudo cd /nie daje mi błędu, ale w rzeczywistości nie powoduje zmiany katalogu roboczego.)
Arjan
2
@Arjan: pwdto także zewnętrzny plik wykonywalny, więc będzie działać. Zauważ, że w niektórych systemach istnieje cdplik wykonywalny, ale w większości jest on bezużyteczny. Nawiasem type -a cdmówiąc, spróbuj użyć o wiele bardziej informacyjnego niż which.
Dennis Williamson,
1
Miły! type -a cdpokazuje zarówno cd is a shell builtini cd is /usr/bin/cdna moim Macu. I podobnie dla pwdi echo. I oba, sudo pwdi sudo echo "Hello world"daj mi wynik. Jednak type -a returntylko daje return is a shell builtini sudo return 3pokazuje mi sudo: return: command not found. Myślę więc, że pytanie brzmi: czy PO wyświetla komunikat o błędzie, czy też PO nie widzi cdpracy bez żadnego błędu? (Lub: jakiego systemu operacyjnego używa OP).
Arjan
sudo sh -c 'cd dirname'nic dla mnie nie robi.
Peter Niederwieser,
1
@Arjan Znalazłem wyjaśnienie: jest to coś w rodzaju głębokiego włamania kompatybilności. Nie spełnia swojej funkcji, ale ma skutki uboczne, które cdma prawdziwy . I nie może nic zrobić zamiast zawieść, gdy bieżąca powłoka nie ma cdpolecenia. Każda powłoka, która może być kiedykolwiek używana przez ludzi cd, w tym /bin/sh. Ale program, który jest widziany z jądra systemu operacyjnego, powłoka może być znacznie prostsza, nawet tylko kilka wierszy kodu. Zobacz Jaki jest sens cdpolecenia zewnętrznego?
Volker Siegel
72
Zamiast tego spróbuj użyć sudo -sdo uruchomienia powłoki roota, a następnie po prostu cddo katalogu.
Gdy skończysz jako root, naciśnij CtrlDlub wpisz exit.
Jak sugeruje Arjan w swoim komentarzu poniżej, ważne jest, aby pamiętać, że jako root można łatwo uszkodzić niezbędne komponenty systemu. Używaj ostrożnie!
Możesz po prostu sustać się rootem, a potem cdwszystko, czego chcesz ... Wiem, że odpowiedź została już zaakceptowana, ale jeśli nie ma jej na liście sudoers, jest to jedyna opcja.
Odpowiedzi:
cd
jest wbudowaną powłoką.sudo
działa tylko z plikami wykonywalnymi. Możesz to zrobić,sudo sh -c 'cd dirname'
ale gdy tylko powłoka zostanie zamknięta, nastąpi powrót do katalogu, w którym zacząłeś. Jeśli powiesz, co chcesz osiągnąć, pomogę ci znaleźć sposób, aby to zrobić.źródło
sudo pwd
czy też by nie działało? (I zawsze zorientowali, żesudo cd
ma pracę, ale nie jesteś tylko widząc wynik posudo
zwrotów. Ale to był tylko dzikie przypuszczenie. Może anicd
niepwd
są w rzeczywistości wbudowane w Basha na Mac. Bieganiewhich cd
jest rzeczywiście mi dać rezultaty. Biegsudo cd /
nie daje mi błędu, ale w rzeczywistości nie powoduje zmiany katalogu roboczego.)pwd
to także zewnętrzny plik wykonywalny, więc będzie działać. Zauważ, że w niektórych systemach istniejecd
plik wykonywalny, ale w większości jest on bezużyteczny. Nawiasemtype -a cd
mówiąc, spróbuj użyć o wiele bardziej informacyjnego niżwhich
.type -a cd
pokazuje zarównocd is a shell builtin
icd is /usr/bin/cd
na moim Macu. I podobnie dlapwd
iecho
. I oba,sudo pwd
isudo echo "Hello world"
daj mi wynik. Jednaktype -a return
tylko dajereturn is a shell builtin
isudo return 3
pokazuje misudo: return: command not found
. Myślę więc, że pytanie brzmi: czy PO wyświetla komunikat o błędzie, czy też PO nie widzicd
pracy bez żadnego błędu? (Lub: jakiego systemu operacyjnego używa OP).sudo sh -c 'cd dirname'
nic dla mnie nie robi.cd
ma prawdziwy . I nie może nic zrobić zamiast zawieść, gdy bieżąca powłoka nie macd
polecenia. Każda powłoka, która może być kiedykolwiek używana przez ludzicd
, w tym/bin/sh
. Ale program, który jest widziany z jądra systemu operacyjnego, powłoka może być znacznie prostsza, nawet tylko kilka wierszy kodu. Zobacz Jaki jest senscd
polecenia zewnętrznego?Zamiast tego spróbuj użyć
sudo -s
do uruchomienia powłoki roota, a następnie po prostucd
do katalogu.Gdy skończysz jako root, naciśnij CtrlDlub wpisz
exit
.Jak sugeruje Arjan w swoim komentarzu poniżej, ważne jest, aby pamiętać, że jako root można łatwo uszkodzić niezbędne komponenty systemu. Używaj ostrożnie!
źródło
Możesz po prostu
su
stać się rootem, a potemcd
wszystko, czego chcesz ... Wiem, że odpowiedź została już zaakceptowana, ale jeśli nie ma jej na liście sudoers, jest to jedyna opcja.źródło