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
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
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
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
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
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
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
|