Script aus Script ausführen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Reen_sc, 15.02.2011.

  1. #1 Reen_sc, 15.02.2011
    Reen_sc

    Reen_sc Jungspund

    Dabei seit:
    11.12.2009
    Beiträge:
    17
    Zustimmungen:
    0
    Hallo,

    habe da ein kleines Prob. Und zwar möchte ich aus einem Bash Script ein anderes aufrufen. Mit absoluten Pfaden funktionioniert das, aber wie mache ich das mit relativen?

    Alle Scripte befinden sich im selben Ordner. Führe ich das oberste Script aus dem Verzeichnis aus, in welchen sich alle Scripte befinden, funktioniert das ohne Probs.

    Führe ich das oberste Script aus einem anderem Verzeichnis aus, wird auch das Unterscript versucht in diesem Fremdverzeichnis zu starten.

    Wie mache ich quasi dem obersten Script bei Aufruf des unteren klar, dass sich dieses im gleichen Verzeichnis befindet???


    Vielen Dank
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 HeadCrash, 15.02.2011
    Zuletzt bearbeitet: 15.02.2011
    HeadCrash

    HeadCrash Routinier

    Dabei seit:
    16.05.2009
    Beiträge:
    482
    Zustimmungen:
    1
    Ort:
    Bayern
    Abend,

    die Stichworte, welche du Suchst sind "working directory" bzw der Suchpfad in der PATH-Variable
    Wenn du deine Skripte mit "./skirptname" startest weißt du deine Shell an, im aktuellen working direcotry nach einem Ensprechenden Skriptnamen zu suchen und diesen zu starten. Das Funktioniert, wie du schon festgestellt hast nur, wenn du im richtigen Verzeichnis bist.
    Wenn du deine Skripte mit "skriptname" startest wird deine Shell versuchen den Befehl im Suchpfad der in der PATH-Variablen hinterlegt ist zu suchen.

    Zur Veranschaulichung ein paar Dummy-Skripte


    Alle Skripte liegen unter "~/skriptEcke/unixboard/workingdir"

    Code:
    # Dummyskript das aufgerufen wird
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cat uhrzeit
    date
    
    Code:
    # Unser Skript, das nur dann funktioniert, 
    # wenn wir im Selbenverzeichnis sind wie das Skript
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cat testskript
    pwd
    ./uhrzeit
    
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ ./testskript
    /home/headcrash/skriptEcke/unixboard/workingdir
    Di 15. Feb 19:01:28 CET 2011
    
    # Wechsel in ein anderes Verzeichnis
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cd ..
    
    headcrash@atlantis:~/skriptEcke/unixboard$ workingdir/testskript
    /home/headcrash/skriptEcke/unixboard
    workingdir/testskript: line 2: ./uhrzeit: Datei oder Verzeichnis nicht gefunden
    
    Hat wie erwartet nur im Skriptverzeichnis "workingdir" funktioniert.

    Code:
    # CD in das Skriptverzeichnis
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cat testskript2
    pwd
    cd /home/headcrash/skriptEcke/unixboard/workingdir
    pwd
    ./uhrzeit
    
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ ./testskript2
    /home/headcrash/skriptEcke/unixboard/workingdir
    /home/headcrash/skriptEcke/unixboard/workingdir
    Di 15. Feb 19:01:34 CET 2011
    
    # Wechsel in ein anderes Verzeichnis
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cd ..
    
    headcrash@atlantis:~/skriptEcke/unixboard$ workingdir/testskript2
    /home/headcrash/skriptEcke/unixboard
    /home/headcrash/skriptEcke/unixboard/workingdir
    Di 15. Feb 19:01:50 CET 2011
    
    Hier sind wir im Hauptskript mit dem "cd" in das Skriptverzeichnis zurück gesprungen, deshalb funktioniert hier der Aufruf des Unterskripts mit "./uhrzeit"

    Code:
    # Anpassen der PATH-Variable
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cat testskript3
    pwd
    PATH=/home/headcrash/skriptEcke/unixboard/workingdir:$PATH
    echo $PATH
    uhrzeit
    ######
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ ./testskript3
    /home/headcrash/skriptEcke/unixboard/workingdir
    /home/headcrash/skriptEcke/unixboard/workingdir:/home/headcrash/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
    Di 15. Feb 19:09:15 CET 2011
    
    # Wechsel in ein anderes Verzeichnis
    headcrash@atlantis:~/skriptEcke/unixboard/workingdir$ cd ../
    
    headcrash@atlantis:~/skriptEcke/unixboard$ workingdir/testskript3
    /home/headcrash/skriptEcke/unixboard
    /home/headcrash/skriptEcke/unixboard/workingdir:/home/headcrash/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
    Di 15. Feb 19:09:30 CET 2011
    
    Hier haben wir die PATH-Variable so verändert, dass unsere Shell auch im Skriptverzeichnis "workingdir" nach ausführbaren Dateien sucht.

    Ich hoffe ich konnte dir dass ein bisschen veranschaulichen, du wirst nicht darum herum kommen den Pfad zu den Skripten irgendwo im Hauptskript zu hinterlegen. Ob das jetzt durch eine Variable für den absoluten Pfad für die Skripte, ein "cd" ins Skriptverzeichnis oder das Anpassen der PATH-Variablen ist bleibt dir hinterlassen.

    Schönen Abend
    HeadCrash
     
  4. #3 Remidemi, 15.02.2011
    Remidemi

    Remidemi Routinier

    Dabei seit:
    17.03.2008
    Beiträge:
    352
    Zustimmungen:
    0
    Ort:
    Südpfalz
    Das ist doch mal ne Antwort ;) !
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.053
    Zustimmungen:
    8
    wenn man keine absoluten Pfade verwenden will (oder gar $PATH anpassen) für den Sprung in's Working-Directory geht auch ein
    Code:
    cd $(dirname $0)
    am Scriptanfang.
    (und ja, das könnte man auch anders schreiben, aber so versteht's wenigstens fast jeder)
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema: Script aus Script ausführen
Besucher kamen mit folgenden Suchen
  1. bin bash script ein anderes script starten

    ,
  2. shell script aus shell script aufrufen

Die Seite wird geladen...

Script aus Script ausführen - Ähnliche Themen

  1. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....
  2. Bashscript aus Debian6 läuft nicht auf Debian7

    Bashscript aus Debian6 läuft nicht auf Debian7: Hallo an alle, nachdem ich ein Skript von squeeze auf wheezy kopiert habe und ausführte, erschienen gleich wilde Fehlermeldungen, nach denen ich...
  3. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  4. Externes Programm mit Script ausführen?

    Externes Programm mit Script ausführen?: Hallo, ich würde gern ein Script zum klonen von festplatten schreiben z.B. mit dem Programm Mondo Rescue. Ist es möglich externen Programmen...
  5. sh Script zum Autostart

    sh Script zum Autostart: hallo liebe Mitglieder, wenn ich unter Linux eins meiner Shell Skripte im Autostart haben will nutze ich immer die @reboot Funktion im crontab....