Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Verzeichnis ändern im Script ?

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Benutzeravatar
Kurt M
Hacker
Hacker
Beiträge: 408
Registriert: 24. Sep 2004, 12:39
Wohnort: Bayrischer Wald
Kontaktdaten:

Verzeichnis ändern im Script ?

Beitrag von Kurt M »

Hallo,

ich möchte mit einem simplen Script in ein Verzeichnis wechseln, das ich sehr oft brauche. Damit will ich die dauernde Eingabe von einer ellenlangen cd /.... Zeile vereinfachen.

Ich habe also ein Script erstellt:

Code: Alles auswählen

#! /bin/bash  (diese Zeile kann man auch weglassen, ändert nichts)
cd /Daten2
ls
wenn ich das nun laufen lasse, schreibt er zwar den Inhalt von /Daten2 auf den Bildschirm, ist aber nachher wieder in dem Verzeichnis wo er schon vorher war. Ich würde aber gerne nach /Daten2 wechseln.

Scheinbar kehrt er nach Beendigung des Scripts wieder in das alte Verzeichnis zurück.

Kann man es machen, dass er in /Daten2 bleibt. Oder gibt es eine andere Lösung durch eine kurze Eingabe in ein anderes Verzeichnis zu wechseln ?

Danke
Kurt
Gast

Beitrag von Gast »

Mach dir ein alias wie unten und dann kannst einfach 'dat' in die Tasten klimpern. Und schon bist du da wo du hin willst.

Code: Alles auswählen

alias dat='cd /Daten2'
Gruß Holgi...
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

Die vorgeschlagene Lösung mit dem Alias ist natürlich besser. Nur zur Erklärung, warum dein Script nicht funktioniert:

Linux erstellt zur Ausführung deines Scirpts eine Sub-Shell. Diese Subshell erbt z.B. den aktuellen Pfad und auch alle Umgebungsvariablen, die vorher exportiert wurden (Befehl "export"). Eine Sub-Shell kann jedoch nicht an den Mutter-Prozess vererben. Deswegen bist du nach Beendigung des Scripts wieder an alter Stelle.
Es gibt jedoch die Möglichkeit, dass beim Aufruf eines Scripts keine Sub-Shell erzeugt wird. Man stellt hierzu einfach dem Aufruf des Scripts einen Punkt voran und dann ein Leerzeichen. Dann wird das komplette Script in der aktuellen Shell ausgeführt. Doch dann ist auch Vorsicht geboten. Wenn z.B. im Script ein "exit" vorkommt, wird deine Session geschlossen - so wie wenn du exit auf der Kommandozeile eingibst.

In deinem Fall würde das mit dem Punkt etwa so aussehen:

Code: Alles auswählen

. script.bash
Benutzeravatar
Kurt M
Hacker
Hacker
Beiträge: 408
Registriert: 24. Sep 2004, 12:39
Wohnort: Bayrischer Wald
Kontaktdaten:

Beitrag von Kurt M »

toll, Danke für die beiden Antworten,
damit ist die Sache gelöst und ich bin wieder schlauer geworden,

Kurt
Antworten