CarstenHa schrieb:
Ich möchte in der Shell, in der ich das Skript aufrufe, in das gleiche Verzeichnis wechseln wie im Skript. Und das soll vom Skript ausgehen.
So eine Möglichkeit gibt es generell nicht: Kontrolle und Vererbung gehen immer vom Elternprozess zum Kindprozess.
TK87 schrieb:
wenn das Skript ansonsten keine Ausgaben in stdout erzeugt, könntest du am Ende des Skripts den Pfad Ausgeben und am Ende des Skripts den per echo ausgeben... [...]
Was ein übler Hack ist. Und es funktioniert auch nur, wenn die aufrufende Shell daran "denkt", den Aufruf genau so zu machen. Wenn das aufgerufene Skript noch weitere Ausgaben nach Stdout erzeugen soll, die man womöglich noch sehen will, dann geht es schon nicht mehr.
Eine andere Möglichkeit wäre, das neue Verzeichnis an einen bekannten Ort (sprich: Datei) zu schreiben und die dann von der Elternshell auslesen zu lassen. Aber auch da braucht es die Kooperation der Elternshell, die z.B. das Skript mit einer Shell-Funktion klammern muss:
| foo() {
~/bin/foo
x=$?
if [ -r /tmp/newdir ]; then
cd $(read -r /tmp/newdir)
rm /tmp/newdir
fi
return $x
}
|