• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Verzeichnis ändern im Script ?

Kurt M

Hacker
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:
#! /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
 
A

Anonymous

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:
alias dat='cd /Daten2'

Gruß Holgi...
 

regexer

Advanced Hacker
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:
. script.bash
 
OP
Kurt M

Kurt M

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

Kurt
 
Oben