PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : verzeichniswechsel im script übergeben an elternshell



walle
21-01-2008, 20:54
Hi,

ich hab folgendes Problem ein Shell Script z.B. mit dem Inhalt:
.
.
.
cd /home
exit 0

wenn ich das ausführe, wird aufgrund das eine Subshell gestartet wird, nach Beendigung der Verzeichniswechsel nicht übernommen, man steht wieder in dem verzeichnis in dem man das Script aufgerufen hat. Hat jemand eine Idee wie ich das Problem lösen kann?

Gruß
Walle

jan61
23-01-2008, 21:25
Moin,

geht nicht ;-) Grundsätzlich kriegst Du keine Änderungen der Umgebung aus einer Subshell in die darüberliegende Shell. Aber es gibt wie meist einen Trick: Am Ende des Shell-Scripts machst Du ein pwd, damit schreibst Du das aktuelle Verzeichnis der Subshell auf STDOUT. Und diese Ausgabe kannst Du in der aufrufenden Shell auswerten, indem Du dort das Script so aufrufst:
cd `Dein_Script`Du musst natürlich aufpassen, dass (z. B. auf Grund von Fehlern im Scriptablauf) da nichts Falsches drin steht, was Dich anschließend in Schwierigkeiten bringt. Besser wäre also sowas:
neues_dir=`Dein_Script`
test -n "$neues_dir" && cd $neues_dirHTH
Jan

EDIT: Es gibt noch eine andere Variante - an das Naheliegende denkt man zuletzt ;-) Wenn Du das Script so aufrufst: ". ./Dein_Script" (oder "source ./Dein_Script"), dann wird es gesourced und damit in der aktuellen Shell ausgeführt. Dann stehst Du anschließend auch im neuen Verzeichnis. Aber Vorsicht: Dann muss das "exit 0" am Ende weg, damit würde nämlich auch die aktuelle Shell beendet. Den Mechanismus benutzt man oft, um in Shell-Scripts Konfig-Dateien mit Variablendefinitionen einzulesen.

walle
07-02-2008, 10:18
Hi,

besten Dank für deine Vorschläge