[geloest] Programm ausführen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
hasso
Beiträge: 72
Registriert: 23.03.2006 10:52:26
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Bremen
Kontaktdaten:

[geloest] Programm ausführen

Beitrag von hasso » 17.04.2007 17:28:34

Moin!

Das muss ich -- glaub' ich -- hier mal posten:

Ich versuche als ROOT ein Programm auszuführen,
das ausführbar ist, das ROOT gehört und zur Gruppe ROOT gehört.

Wenn ich in das Verzeichnis wechsle, in dem das Programm liegt und
es dort ausführe, geht's wunderbar:

Code: Alles auswählen

root@rechner:/usr/local/sbin/open2300# ./fetch2300
Nur, wenn ich _nicht_ im Verzeichnis des Programms bin, sondern
den gesamten Programmpfad mit angebe, geht's nicht:

Code: Alles auswählen

root@rechner:~# /usr/local/sbin/open2300/./fetch2300
Das letztere habe ich auf anderen Linuxkisten (alle Debian) schon
zigmal ausgeführt, ging _immer_. Kann es sein, dass das letzte
"dist-upgrade" schuld daran ist?

Etwas ratlos grüßt,

Hasso
Zuletzt geändert von hasso am 23.04.2007 14:31:36, insgesamt 1-mal geändert.

Benutzeravatar
rksteve
Beiträge: 716
Registriert: 11.09.2003 12:24:53
Kontaktdaten:

Beitrag von rksteve » 17.04.2007 17:30:19

wenn du eh den Pfad angibst kannst du ./ weglassen.

Code: Alles auswählen

root@rechner:~# /usr/local/sbin/open2300/fetch2300
Obwohl ich gedacht hätte das es auch mit funktioniert da ./ das akutelle Verzeichnis ist

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 17.04.2007 19:55:52

Sollte eigentlich auch funktionieren.

Code: Alles auswählen

daniel@daniel-laptop:/tmp$ cat test.sh
#!/bin/bash
echo "test"

daniel@daniel-laptop:/tmp$ /tmp/./test.sh
test

daniel@daniel-laptop:/tmp$ /tmp/test.sh
test
(Skript liegt nicht im Pfad)
Oh, yeah!

Benutzeravatar
hasso
Beiträge: 72
Registriert: 23.03.2006 10:52:26
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Bremen
Kontaktdaten:

Beitrag von hasso » 18.04.2007 11:31:50

OK.

Danke erstmal für Eure Antworten.

Das "./" vor dem Programmnamen brauche ich doch aber _immer_,
wenn der Programmpfad nicht in der Umgebungsvariable $PATH
enthalten ist, oder? Ansonsten wird das Programm doch gar nicht
erst ausgeführt ...

MfG!

Hasso

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 18.04.2007 12:41:58

Ja genau.

Entweder dem Skript ein ./skript.sh voran stellen oder aber den Pfad, in dem das Skript liegt, mit in $PATH aufnehmen.

Z.B. in der .bashrc
Oh, yeah!

comes
Beiträge: 2702
Registriert: 11.03.2005 07:33:30
Wohnort: /dev/null
Kontaktdaten:

Beitrag von comes » 18.04.2007 12:43:49

den ./ brauchst du nur, wenn du ein programm im AKTUELLEN verzeichnis ausführen willst.

grund:
wenn das programm nicht in path eingetragen ist, erwartet linux das du ihm sagst wo das programm liegt, welches du starten willst.
es erwartet also immer Pfadangabe + Programm

./ ist hier die pfadangabe = aktuelles verzeichnis
foobar = programmname

es kann durchaus sein, dass das von dir gewünschte programm intern irgendwelche pfade ändert. DENN wenn du das programm von /home/foo/ ausführen willst mit

Code: Alles auswählen

/home/foo/ $: cd /foo/bar/klaus/
/foo/bar/klaus/ $: ./dieter.sh
dieter.sh (das script) intern ein ./../fritz/ macht. dann heißt das im klartext er geht von /foo/bar/klaus/ nach /foo/bar/fritz

Code: Alles auswählen

/home/foo/ $: /foo/bar/klaus/dieter.sh
wenn du das jetzt aber von /home/foo/ startest, macht er es anders. dann sucht er unter /home/fritz/ was es vermutlich nicht geben wird. darum läuft dein programm nicht.

bissl wirr, ich weiß, vllt kann es jemand verständlicher formulieren, aber das is meine vermutung warum dein tool nicht lüppt

nachtrag:
sowas wird gern gemacht um absolute pfadangaben zu vermeiden
grüße, comes

Faschismus ist keine Meinung, sondern ein Verbrechen!
http://sourcewars.de

Benutzeravatar
hasso
Beiträge: 72
Registriert: 23.03.2006 10:52:26
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Bremen
Kontaktdaten:

Beitrag von hasso » 23.04.2007 14:10:48

Joho moin!

@all:

Danke für die Nachrichten!

@comes:

Deine Nachricht war gar nicht so wirr! Jetzt hab' ich das _endlich_ mal mit
diesem "./" kapiert! Jetzt weiss ich endlich, wofür dieses "Dummy-Verzeichnis"
eigentlich gut ist.

Ich würde mich selbst zwar mittlerweile als "fortgeschrittener" Linux-User
bezeichnen, aber _das_ war mir bislang nie so ganz klar gewesen. Jetzt: Glaskar!
Danke, danke, danke!
:)

:!: Achja, der Grund, wieso die Sch**** nicht lief:

Hätte mal das README zur Software aufmerksamer lesen sollen: Config-Datei muss
mit _absolutem_ Pfad übergeben werden ... jetzt geht's ...

@all:

Nochmal vielen Dank!

Gruß

Hasso

Antworten