command cd im script

orion

orion

Mitglied
Thread Starter
Dabei seit
19.04.2003
Beiträge
95
Reaktionspunkte
0
habe in einem script den command "cd /irgendein verzeichnis" eingesetzt.
Danach weitere Befehle, die auch mit gewechseltem Verzeichnis durchgeführt werden. Beim Verlassen des scripts bin ich aber wieder im ursprünglichen Verzeichnis. Wie kann ich das Verzeichnis aber über ein script endgültig wechseln?

danke orion
 
orion schrieb:
habe in einem script den command "cd /irgendein verzeichnis" eingesetzt.
Danach weitere Befehle, die auch mit gewechseltem Verzeichnis durchgeführt werden. Beim Verlassen des scripts bin ich aber wieder im ursprünglichen Verzeichnis. Wie kann ich das Verzeichnis aber über ein script endgültig wechseln?

danke orion

Du musst das Skript in der selben Shell und nicht in einer Subshell ausführen.
Das machst du indem du einen Punkt voranstellst (Leerzeichen danach beachten)

Code:
. /pfad/zu/deinem/skript

Aufrufe in Form von ./programm, /usr/bin/programm oder sh programm rufen immer eine Subshell auf in der das Programm/Skript ausgeführt wird, Änderungen werden mit dem Beenden dieser Subshell und somit auch mit Ende des Programms verworfen.
 
canfAN schrieb:
Du musst das Skript in der selben Shell und nicht in einer Subshell ausführen.
Das machst du indem du einen Punkt voranstellst (Leerzeichen danach beachten)

Code:
. /pfad/zu/deinem/skript

Leider wird der Punkt . als command pwd interpretiert und führt dann zu einer Fehlermeldung, weil er ja falsche Parameter mitbekommt.
 
es muss heissen . ./script
 
TheFallenAngel schrieb:
es muss heissen . ./script

dann kommt halt eben diese Meldung

usage: pwd [-LP]

der Punkt . steht für pwd
 
Hast du vielleicht einen alias gesetzt ? sitzt jetzt nicht am mac, aber hier unter Linux geht das so...
 
nein, diesen alias habe ich nicht gesetzt, das ist vorgegeben beim Mac.
 
jetzt habe ich die Lösung:

der Aufruf, der das script veranlasst keine subshell aufzurufen lautet

source pfad/zum/script
 
so extra am mac getestet, ich habe keinen alias auf ".".

Wuerde meiner Meinung nach auch keinen Sinn machen, weil du nichtmal mehr Programme mit ./Programm starten koenntest.
 
TheFallenAngel schrieb:
so extra am mac getestet, ich habe keinen alias auf ".".

Wuerde meiner Meinung nach auch keinen Sinn machen, weil du nichtmal mehr Programme mit ./Programm starten koenntest.


Mit "./skript" wird Skript in subshell durchgeführt
Mit "source skript" wird Skript in aufrufender Shell abgearbeitet
Mit "." allein wird pwd durchgeführt.
Mit ". ./skript" wird pwd durchgeführt mit Parameter "./skript" was zu
einem fehler führt.
So ist es bei mir.

Vielen Dank
 
TheFallenAngel schrieb:
so extra am mac getestet, ich habe keinen alias auf ".".

Wuerde meiner Meinung nach auch keinen Sinn machen, weil du nichtmal mehr Programme mit ./Programm starten koenntest.

Das eine hat mit dem anderen nichts zu tun.

"./Programm" ist eine relative Pfadangabe, die notwendig ist, da der "." nicht im Suchpfad liegt.
". " dagegen ist ein voreingestelltes alias, wie es sich mit dem Aufruf des Kommandos "alias" leicht feststellen lässt.
Um den alias für die laufende Shell ausszuschalten, kann z. B. das Kommando "unalias ." verwendet werden.
 
Zurück
Oben Unten