ubuntuusers.de

cd Aufruf in Shell Skript geht nicht

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

onkel_jürgen

Anmeldungsdatum:
4. April 2008

Beiträge: 11

hi,

für euch mag das vielleicht trivial klingen, aber ich muss in einem Shell Skript einen Pfadwechsel vornehmen.
Wenn ich das allerdings mit dem Befehl cd mache, tut sich gar nix.
Als Beispiel steht im Skript:

#!/bin/sh
cd /my_directory/

Aber so ziemlich jeder andere befehl, den ich in diesem Skript versucht habe geht.
Einzig und allein der Pfadwechsel funktioniert nicht.
Woran könnte das liegen???

Beste Grüße

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

Ein Programm wird immer vom Original-Prozess abgeforkt. Der Wechsel des Verzeichnisses klappt im Programm. Mit dem Ende des Programmes (Prozess) bist du wieder im alten Prozess und damit im alten Verzeichnis.

mbecker

Avatar von mbecker

Anmeldungsdatum:
16. September 2007

Beiträge: 643

Wohnort: Hahnheim

Wechsle auf der Konsole mittels "cd" in das gewünschte Verzeichnis. Wenn du dort gibst "pwd" eingeben. Die Ausgabe kopieren und in deinem Script

cd "mein kopierter Pfad"


eingeben.

So vermeidest du Schreibfehler. Wenn das nicht funktioniert, poste mal die Dateistruktur. In deinem Kommando gehe ich davon aus das der Ordner "my_directory" direkt im Root-Verzeichnis liegt (also "/" und nicht "/root").

onkel_jürgen

(Themenstarter)

Anmeldungsdatum:
4. April 2008

Beiträge: 11

okay, das heißt also, mein Skript wird korrekt ausgeführt, aber ich kann mit einem Skript nicht aktiv das Verzeichnis wechseln??

es geht eigentlich nur darum schneller in ein Verzeichnis zu wechseln, weil die Pfadangabe ewig lang ist.
Und ich wollte mir das sparen, indem ich einfach ein Skript schreibe, was mir das ewige getippe erspart.
Der Pfad ist übrigens schon der kopierte.

Gibt es da vll eine andere alternative??

Danke für die schnellen Antworten

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

onkel jürgen hat geschrieben:

Gibt es da vll eine andere alternative??

Tab-Completion. ☺ Schreib mal den Anfang eines Befehls oder Verzeichnisses und drücke Tab. Nach Möglichkeit vervollständigt er direkt, wenn nichts passiert, dann drück' nochmal Tab, um alle Möglichkeiten zu sehen. Zur Not google mal nach diesem Begriff, wenn du nicht ganz damit zurechtkommst - aber eigentlich ist es super intuitiv.

Dürfte auch wesentlich schneller als deine Idee mit dem Script sein, da du das universell verwenden kannst (sonst müsstest du dir ja für jedes lange Verzeichnis 'nen Script schreiben).

816_8055

Avatar von 816_8055

Anmeldungsdatum:
27. Dezember 2007

Beiträge: 81

Alternativ wäre das Verwenden einer function:

function cd_irgendwas () { cd /extrem/langer/pfad; } 


Wenn du diese Zeile in deine .bashrc einfügst, kannst du die function wie einen normalen Befehl aufrufen.

mfg, Jo

P.S.: Auf die Leerzeichen achten!

onkel_jürgen

(Themenstarter)

Anmeldungsdatum:
4. April 2008

Beiträge: 11

ja cool das mit der Funktion in der bashrc werd ich mal probieren.
Hatte es schonmal mit einem alias versucht, aber wollt auch ncih so richtig.

danke

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

ln -s seeehr/laaanger/Pfad kurzerName

Das legt einen symbolischen Link an.

onkel_jürgen

(Themenstarter)

Anmeldungsdatum:
4. April 2008

Beiträge: 11

okay, dann versuch ich mal mein Problem genauer zu erklären.

Das Skript sollte dazu dienen in ein Arbeitsverzeichnis zu wechseln, welches extrem lang ist.
Und danach sollte gleich der Befehl zum Sourcen des Intel Fortran compilers stattfinden.
Das hätte mir halt ein wenig zeit erspart.
Der ganze Code ist auch extrem simpel und das Skript funktioniert auch, was das sourcen betrifft. Nur leider bin ich eben nach dem ausführen nicht gleich in meinem Arbeitsverzeichnis.

Hier mal mein Skript (is eigentlich wirklich billig, aber das getippe, auch mit Tab hat mich halt ein wenig genervt, wenn das mehrere male am tag macht):

#!/bin/sh
# aufrufen des Arbeitspfades
cd /media/Dokumente-Thinkpad/Studium/Hiwi/IAG/
source /opt/intel/fc/10.1.015/bin/ifortvars.sh

Wenn da jemand ne gute kennt, wäre ich euch dankbar.

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

onkel jürgen hat geschrieben:

#!/bin/sh
# aufrufen des Arbeitspfades
cd /media/Dokumente-Thinkpad/Studium/Hiwi/IAG/
source /opt/intel/fc/10.1.015/bin/ifortvars.sh

Das sieht doch gut aus. Wo liegt das Problem?

Du kannst es Dir natürlich leicht machen und

alias arbeit="cd /media/Dokumente-Thinkpad/Studium/Hiwi/IAG/ ; source /opt/intel/fc/10.1.015/bin/ifortvars.sh"


ausführen und an das Ende Deiner .bashrc hängen.

Dann wird das ausgeführt, wenn Du "arbeit" tippst.

Gruss

Dirk

onkel_jürgen

(Themenstarter)

Anmeldungsdatum:
4. April 2008

Beiträge: 11

okay cool, es hat funktioniert.

ich dachte nur ein Skript hilft vll dabei, nicht die Übersicht zu verlieren, anstatt die ganze Zeit irgendwelche alias in die bashrc schreibt.

Aber vielen dank für die Hilfe

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

onkel jürgen hat geschrieben:

okay cool, es hat funktioniert.
ich dachte nur ein Skript hilft vll dabei, nicht die Übersicht zu verlieren, anstatt die ganze Zeit irgendwelche alias in die bashrc schreibt.
Aber vielen dank für die Hilfe

Gerne.

Du kannst es natürlich auch in das Skript "/opt/intel/fc/10.1.015/bin/ifortvars.sh" schreiben oder Dir eine Kopie davon anlegen und das dorthinein schreiben.

Gruss

Dirk

Antworten |