[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux-support] bash, Einzeiler



On Sam, Jan 12, 2002 at 12:44:00 +0100, Roger Schmid wrote:
> Hallo

sali,

> Wenn ich z.B. im Verzeichnis /usr/local bin und folgendes eingebe:
> 
> cd /foo/bar | ls -la
> 
> Passiert eigentlich genau was ich will (der Inhalt wird angezeigt). Wie
> kann ich aber erreichen, dass ich dann auch gleich nach /foo/bar
> wechsle? Mit meinem Versuch befinde ich mich immer noch in /usr/local

jeder prozess verfügt in seiner runtime umgebung über ein momentanes
arbeitsverzeichniss, das cwd (current working directory). wenn du dies
für einen prozess einstellen willst, musst du das auch in seiner prozess
umgebung tun oder du lässt es vom parent vererben.

z.b. 

cd /foo/bar && ls -la

mit && wird der befehl links immer ausgeführt und der befehl rechts
davon nur, wenn der vorherige erfolgreich beendet wurde.

obiges beispiel macht nichts anderes, als das cwd der bash zu verändern
und einen neuen prozess zu forken() der das cwd des parents erbt. nach
dem beenden des forks bist du ohenhin wieder im cwd von der shell (als
/foo/bar) und hast das verzeichniss gewechselt.

alles klar?