Die Idee ist, dass, wenn ich mich gerade im Ordner befinde
home/Documents
, der obige Code gedruckt wirdhome
- sich aber immer noch im Verzeichnis befindethome/Documents
Sie brauchen gar nicht, echo
weil Sie pwd
drucken, was Sie wollen. Benutze das:
(cd .. && pwd)
Hier gibt es zwei kluge Dinge:
(whatever)
läuftwhatever
in einer subshell. Wenncd
sich diese Klammern in diesen Klammern befinden, wird das aktuelle Arbeitsverzeichnis der Subshell geändert, nicht die Hauptshell (Ihre aktuelle).a && b
läuftb
wenn iffa
erfolgreich war (zurückgegebener Exitstatus0
). Wenn Sie möchten, dass Ihr Skriptcd
robust ist, sollten Sie im Allgemeinen immer überprüfen, ob escd
erfolgreich war. Dadurch wird verhindert, dass andere Befehle in einem falschen Verzeichnis ausgeführt werden.
Wenn Symlinks vorhanden sind, wird möglicherweise nicht der erwartete Pfad angezeigt. Weitere Informationen finden Sie in dieser Community-Wiki-Antwort .