cdist eine eingebaute Shell. sudoFunktioniert nur mit ausführbaren Dateien. Sie können dies tun, sudo sh -c 'cd dirname'aber sobald die Shell beendet ist, kehren Sie zu dem Verzeichnis zurück, von dem Sie gestartet haben. Wenn Sie sagen, was Sie erreichen wollen, kann ich Ihnen dabei helfen, einen Weg zu finden, dies zu erreichen.
Aber sudo pwdwürde das dann auch nicht funktionieren? (Ich habe immer gedacht, dass sudo cddas funktioniert, aber Sie sehen das Ergebnis nach der sudoRückkehr einfach nicht . Aber das war nur eine wilde Vermutung. Vielleicht ist Bash auf einem Mac weder eingebaut cdnoch pwdwirklich eingebaut. Laufen which cdliefert in der Tat Ergebnisse. Laufen sudo cd /gibt mir keinen Fehler, führt aber in der Tat nicht zu einem geänderten Arbeitsverzeichnis.)
Arjan
2
@Arjan: pwdist auch eine externe ausführbare Datei, damit es funktioniert. Beachten Sie, dass auf einigen Systemen eine cdausführbare Datei vorhanden ist , diese jedoch größtenteils unbrauchbar ist. Versuchen Sie type -a cdes mit viel informativer als whichübrigens.
Dennis Williamson
1
Nett! type -a cdzeigt beides cd is a shell builtinund cd is /usr/bin/cdauf meinem Mac. Und ebenfalls für pwdund echo. Und beides sudo pwdund sudo echo "Hello world"gib mir ein Ergebnis. Gibt aber type -a returnnur nach return is a shell builtinund sudo return 3zeigt es mir sudo: return: command not found. Die Frage ist also: Bekommt das OP eine Fehlermeldung oder sieht das OP die cdArbeit nicht fehlerfrei? (Oder: Welches Betriebssystem verwendet das OP?)
Arjan
sudo sh -c 'cd dirname'tut nichts für mich
Peter Niederwieser
1
@Arjan Ich fand die Erklärung: Es ist so etwas wie ein Deep Compatibility Hack. Es macht nicht seine Funktion, aber es ist von den Nebenwirkungen gekommen, die das Reale cdhat. Und es kann nichts tun, anstatt zu scheitern, wenn die aktuelle Shell keinen cdBefehl hat. Jede Hülle, die jemals von Menschen benutzt werden darf, hat cdauch /bin/sh. Aber ein Programm, das vom Betriebssystemkern aus gesehen eine Shell ist, kann viel einfacher sein als das, selbst wenn es nur ein paar Codezeilen sind. Siehe Wozu dient der cdexterne Befehl?
Volker Siegel vor
72
Versuchen Sie stattdessen sudo -smit eine Root-Shell zu starten und dann einfach cdin das Verzeichnis.
Wenn du als root fertig bist, drücke CtrlDoder tippe exit.
Wie Arjan in seinem Kommentar unten anmerkt, ist es wichtig zu beachten, dass man als Root leicht wesentliche Systemkomponenten beschädigen kann. Mit Vorsicht verwenden!
Aber: seien Sie vorsichtig, wenn einer der Roots ist ...
Arjan
7
Sie können einfach suroot werden und dann cdalles, was Sie wollen ... Ich weiß, eine Antwort wurde bereits akzeptiert, aber wenn eine nicht auf der Liste der Sudoer steht, ist dies die einzige Option.
Antworten:
cd
ist eine eingebaute Shell.sudo
Funktioniert nur mit ausführbaren Dateien. Sie können dies tun,sudo sh -c 'cd dirname'
aber sobald die Shell beendet ist, kehren Sie zu dem Verzeichnis zurück, von dem Sie gestartet haben. Wenn Sie sagen, was Sie erreichen wollen, kann ich Ihnen dabei helfen, einen Weg zu finden, dies zu erreichen.quelle
sudo pwd
würde das dann auch nicht funktionieren? (Ich habe immer gedacht, dasssudo cd
das funktioniert, aber Sie sehen das Ergebnis nach dersudo
Rückkehr einfach nicht . Aber das war nur eine wilde Vermutung. Vielleicht ist Bash auf einem Mac weder eingebautcd
nochpwd
wirklich eingebaut. Laufenwhich cd
liefert in der Tat Ergebnisse. Laufensudo cd /
gibt mir keinen Fehler, führt aber in der Tat nicht zu einem geänderten Arbeitsverzeichnis.)pwd
ist auch eine externe ausführbare Datei, damit es funktioniert. Beachten Sie, dass auf einigen Systemen einecd
ausführbare Datei vorhanden ist , diese jedoch größtenteils unbrauchbar ist. Versuchen Sietype -a cd
es mit viel informativer alswhich
übrigens.type -a cd
zeigt beidescd is a shell builtin
undcd is /usr/bin/cd
auf meinem Mac. Und ebenfalls fürpwd
undecho
. Und beidessudo pwd
undsudo echo "Hello world"
gib mir ein Ergebnis. Gibt abertype -a return
nur nachreturn is a shell builtin
undsudo return 3
zeigt es mirsudo: return: command not found
. Die Frage ist also: Bekommt das OP eine Fehlermeldung oder sieht das OP diecd
Arbeit nicht fehlerfrei? (Oder: Welches Betriebssystem verwendet das OP?)sudo sh -c 'cd dirname'
tut nichts für michcd
hat. Und es kann nichts tun, anstatt zu scheitern, wenn die aktuelle Shell keinencd
Befehl hat. Jede Hülle, die jemals von Menschen benutzt werden darf, hatcd
auch/bin/sh
. Aber ein Programm, das vom Betriebssystemkern aus gesehen eine Shell ist, kann viel einfacher sein als das, selbst wenn es nur ein paar Codezeilen sind. Siehe Wozu dient dercd
externe Befehl?Versuchen Sie stattdessen
sudo -s
mit eine Root-Shell zu starten und dann einfachcd
in das Verzeichnis.Wenn du als root fertig bist, drücke CtrlDoder tippe
exit
.Wie Arjan in seinem Kommentar unten anmerkt, ist es wichtig zu beachten, dass man als Root leicht wesentliche Systemkomponenten beschädigen kann. Mit Vorsicht verwenden!
quelle
Sie können einfach
su
root werden und danncd
alles, was Sie wollen ... Ich weiß, eine Antwort wurde bereits akzeptiert, aber wenn eine nicht auf der Liste der Sudoer steht, ist dies die einzige Option.quelle