Warum sollte man sudo cd eingeben, was auch immer das Verzeichnis nicht ändert?
Warum sollte man sudo cd eingeben, was auch immer das Verzeichnis nicht ändert?
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.
sudo pwd
würde das dann auch nicht funktionieren? (Ich habe immer gedacht, dass sudo cd
das funktioniert, aber Sie sehen das Ergebnis nach der sudo
Rückkehr einfach nicht . Aber das war nur eine wilde Vermutung. Vielleicht ist Bash auf einem Mac weder eingebaut cd
noch pwd
wirklich eingebaut. Laufen which cd
liefert in der Tat Ergebnisse. Laufen sudo 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 eine cd
ausführbare Datei vorhanden ist , diese jedoch größtenteils unbrauchbar ist. Versuchen Sie type -a cd
es mit viel informativer als which
übrigens.
type -a cd
zeigt beides cd is a shell builtin
und cd is /usr/bin/cd
auf meinem Mac. Und ebenfalls für pwd
und echo
. Und beides sudo pwd
und sudo echo "Hello world"
gib mir ein Ergebnis. Gibt aber type -a return
nur nach return is a shell builtin
und sudo return 3
zeigt es mir sudo: return: command not found
. Die Frage ist also: Bekommt das OP eine Fehlermeldung oder sieht das OP die cd
Arbeit nicht fehlerfrei? (Oder: Welches Betriebssystem verwendet das OP?)
sudo sh -c 'cd dirname'
tut nichts für mich
cd
hat. Und es kann nichts tun, anstatt zu scheitern, wenn die aktuelle Shell keinen cd
Befehl hat. Jede Hülle, die jemals von Menschen benutzt werden darf, hat cd
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 der cd
externe Befehl?
Versuchen Sie stattdessen sudo -s
mit eine Root-Shell zu starten und dann einfach cd
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!
Sie können einfach su
root werden und dann cd
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.