Blumenmann: Kleines Linux Problemchen

Hallo zusammen..
ich habe ein kleines Problem beim ausführen eines Scripts. Es handelt sich dabei um das Startscript eines TeamSpeak Servers (das Script liegt dem TS Server bei wenn man ihn herunterläd). Ich kann in das Verzeichnis des Severs, bzw. des Scripts wechseln und es von dort aus starten. Wenn ich mich jedoch nicht im selben Verzeichnis befinde, kommt es zu einem Problem.

Beispiel:
Das Startscript liegt in /home/tsuser/tss

Ich bin als root angemeldet und befinde mich in /etc/

Dann melde ich mich mich als tsuser an: su tsuser (ich bin immer noch in /etc/)

Von hieraus versuche ich jetzt das Script zu starten:
. /home/tsuser/tss/script

Das Script startet leider nicht. Ich muss mich scheinbar im selben Verzeichnis befinden um es zu starten. Das ist auch nicht weiter schlimm aber nachdem ich versucht habe das Script zu starten, bin ich automatisch wieder root. Wenn ich es aus dem selben Verzeichnis starte, passiert das nicht. Woran kann sowas liegen?

  1. Hi,

    Ohne das script gesehen zu haben, ist das etwas Ratespiel, aber ich deutele mal folgendes:

    . /home/tsuser/tss/script

    Der Punkt da vorne stoert ... ! Was Du suchst, ist:

    /home/tsuser/tss/script

    bzw.

    /home/tsuser/tss/script &

    Das Script startet leider nicht.

    Welche Fehlermeldung kommt?

    Ich muss mich scheinbar im selben Verzeichnis befinden um es zu starten.

    Je nachdem, wie das script geschrieben ist, *kann* das sein (wenn z.B. relative paths angegeben sind). *Sollte* ;-) aber im Problemfall Fehlermeldungen von sich geben.

    Das ist auch nicht weiter schlimm aber nachdem ich versucht habe das Script zu starten, bin ich automatisch wieder root.

    Das ist normal, denn nach dem exit des scripts landest Du wieder in Deiner (root-)shell ...

    Wenn ich es aus dem selben Verzeichnis starte, passiert das nicht.

    Das verstehe ich jetzt nicht - meinst Du damit, dass das script im Vordergrund laeuft und die shell blockiert?

    Gruss & HTH,

    • Joerg
  2. Hallo Blumenmann.

    Von hieraus versuche ich jetzt das Script zu starten:
    . /home/tsuser/tss/script

    Damit würdest du das Script „sourcen“, also dem Script die Kontrolle über deine aktuelle Terminalumgebung übergeben. Ein „exit“ in diesem Script zum Beispiel würde dann also bewirken, dass das Terminal geschlossen wird.

    Das Script startet leider nicht.

    Ich schließe mich Jörg an: Welche Fehlermeldung erscheint? Wurde das x-Bit beim Script für tsuser gesetzt?

    Einen schönen Freitag noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    debian/rules
  3. hallo,

    Von hieraus versuche ich jetzt das Script zu starten:
    . /home/tsuser/tss/script

    Da gibt es (mindestens) einen Verständnisfehler und einen Tippfehler.

    Das Script startet leider nicht.

    Kann es auch nicht, weil du es nicht aufgerufen hast. Der Tippfehler besteht im störenden Leerzeichen. Der Aufruf müßte lauten:
      ./home/tsuser/tss/script
    Allerdings führt dich das, wenn du das von einer Systemkonsole aus aufrufst, auf den Systempfad
      /etc/home/tsuser/tss/script
    und der existiert vermuztlich nicht. Ohne Punkt würde es dich auf den korrekten Systempfad führen. Aber selbst wenn dein Script ausführbar sein sollte, passiert immer noch nichts, weil /home/tsuser/tss vermutlich nicht im %PATH% liegt.

    Der Verständnisfehler liegt in der Verwendung des "Punktes". Mache dir bitte klar, daß "." auf einer unixoiden Umgebung immer bedeutet: "starte vom aktuellen Verzeichnis aus", und ".." bedeutet: starte vom übergeordneten Verzeichnis aus.

    Ich muss mich scheinbar im selben Verzeichnis befinden um es zu starten.

    Nein, durchaus nicht. Du mußt nur verstehen, wie du Verzeichnisnamen angibst und was du im %PATH% als unmittelbar als ausführbar zu erreichen gekennzeichnet hast.

    Außerdem: du solltest immer dein syslog konsultieren. Da stehen die Fehlermeldungen drin, die du garantiert bekommen hast.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Tach,

      Aber selbst wenn dein Script ausführbar sein sollte, passiert immer noch nichts, weil /home/tsuser/tss vermutlich nicht im %PATH% liegt.

      es muß nicht im Path sein, er gibt ja den Pfad an.

      mfg
      Woodfighter

    2. echo $begrüßung;

      . /home/tsuser/tss/script
      Das Script startet leider nicht.

      Kann es auch nicht, weil du es nicht aufgerufen hast. Der Tippfehler besteht im störenden Leerzeichen. Der Aufruf müßte lauten:

      Diese Aussage ist nicht richtig. Der . soll hier keineswegs das aktuelle Verzeichnis darstellen, sondern ist, wenn er so allein dasteht, ein in der/vielen Shell(s) eingebautes Kommando. Dieses lässt sich auch mit "source" aufrufen. Mathias erwähnte das bereits und auch die Folgen, wenn ein Programm mit vorangehendem source oder . aufgerufen wird.

      echo "$verabschiedung $name";

    3. Hi,

      Außerdem: du solltest immer dein syslog konsultieren. Da stehen die Fehlermeldungen drin, die du garantiert bekommen hast.

      Das muss keineswegs so sein. Wenn jede Fehlermeldung im syslog landen wuerde, dann muesste fuer /var/log seeehr viel Platz geschaffen werden ;-)

      ... und die anderen, umh, "Fehlerchen" in Deinem Posting wurden bereits erwaehnt ;-)

      Gruss aus Lausanne!

      • Joerg