Linux-Anfänger und gcc
Def
- sonstiges
0 dedlfix
0 Der Martin
0 dedlfix
0 fastix®
0 Def
Hallo allerseits,
ich habe nun meine ersten wackligen Schritte auf Linux-Boden gewagt (Debian GNU/Linux 3.1 r0a "Sarge"). Nun habe ich Folgendes versucht, von dem ich annahm, es sei eigentlich ganz einfach:
/* hello.c */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Hello world!\n");
return EXIT_SUCCESS;
}
def@debian:~$ gcc -o hello hello.c
def@debian:~$ ls
Desktop hello hello.c
def@debian:~$ hello
bash: hello: command not found
def@debian:~$
Irgendeine Idee, wie ich das Problem angehen könnte? Mein Vorgehen entspricht dem verschiedener Tutorials im Internet. Die Datei "hello" wird erzeugt, und in den Eigenschaften wird der Mime-Typ "application/x-executable" aufgeführt. Alles scheint zu funktionieren... Nur wird das Ergebnis nicht als ausführbares Programm akzeptiert.
Hat vielleicht irgendjemand einen Vorschlag, wie ich dem Problem auf die Spur kommen kann? (oder vielleicht sogar eine Lösung ;-)
Für eure Zeit dankt...
Def
echo $begrüßung;
def@debian:~$ ls
Desktop hello hello.c
def@debian:~$ hello
bash: hello: command not found
Das aktuelle Verzeichnis dürfte sich sicherlich nicht im Pfad befinden. echo $PATH wird dir keinen einzelnen . anzeigen. hello befindet sich also in keinen PATH-Verzeichnis und du musst beim Starten angeben, wo es zu finden ist: ./hello
Die Datei "hello" wird erzeugt, und in den Eigenschaften wird der Mime-Typ "application/x-executable" aufgeführt.
Wo auch immer du diese Angabe hergeholt hast, ein ls -l ist da im Allgemeinen hilfreicher.
echo "$verabschiedung $name";
Hallo,
Das aktuelle Verzeichnis dürfte sich sicherlich nicht im Pfad befinden. echo $PATH wird dir keinen einzelnen . anzeigen. hello befindet sich also in keinen PATH-Verzeichnis und du musst beim Starten angeben, wo es zu finden ist: ./hello
also von DOS/Windows her bin ich es gewohnt, dass ausführbare Dateien *zuerst* im aktuellen Verzeichnis gesucht werden, und dann erst in allen Verzeichnissen, die in %path% definiert sind. Dann wäre die Angabe ./hello ziemlich sinnfrei. Ist das unter Linus nicht so?
So long,
Martin
echo $begrüßung;
also von DOS/Windows her bin ich es gewohnt,
Da geht es Def sicher genauso wie dir.
dass ausführbare Dateien *zuerst* im aktuellen Verzeichnis gesucht werden, und dann erst in allen Verzeichnissen, die in %path% definiert sind. Dann wäre die Angabe ./hello ziemlich sinnfrei. Ist das unter Linus nicht so?
Es ist, wie ich schrieb, nur dann ähnlich DOS/Windows, wenn ein Punkt, welcher für das "aktuelles Verzeichnis" steht, als ein Element im $PATH enthalten ist. Sonst nicht.
echo "$verabschiedung $name";
Moin!
also von DOS/Windows her bin ich es gewohnt, dass ausführbare Dateien *zuerst* im aktuellen Verzeichnis gesucht werden, und dann erst in allen Verzeichnissen, die in %path% definiert sind. Dann wäre die Angabe ./hello ziemlich sinnfrei. Ist das unter Linus nicht so?
Aus gutem Grund nicht. Ich erkläre an einer kleinen Geschichte warum es so ist:
Stell Dir folgendes vor:
Im Verzeichnis /tmp legt der User 'böse' eine Datei an:
--
rm -rf /*
--
Der darin enthaltende Befehl löscht alle Dateien auf dem gesamten Dateisystem- man muss nur die Rechte dazu haben...
Der Benutzer 'böse' vergibt nennt die Datei 'ls' und vergibt mit chmod 755 das Ausführen-Recht und fliegt im Anschluss nach Südamerika.
Später kommt der Systemverwalter (good). Dieser wechselt in das /tmp- Verzeichnis und tippt: ls ... - Die Katastrophe wäre groß, aus Sicht des Systems handelt es sich um das 'Jüngste Gericht'.
Übrigens: Auch DOS- oder Windows führt zuerst die sogenannten Build-In-Kommandos der Schell (command.com/cmd.exe) aus und durchsucht erst dann das aktuelle Verteichnis, dannach den Pfad. Aber es ist ja auch ein "Ein-Benutzer-System". Trotz allem Herumgestrickes daran: der Schwefelgestank geht nicht weg ;)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo,
also von DOS/Windows her bin ich es gewohnt, [...] Ist das unter Linus nicht so?
Aus gutem Grund nicht. Ich erkläre an einer kleinen Geschichte warum es so ist:
[Geschichte]
Übrigens: Auch DOS- oder Windows führt zuerst die sogenannten Build-In-Kommandos der Schell (command.com/cmd.exe) aus und durchsucht erst dann das aktuelle Verteichnis, dannach den Pfad.
Richtig. Aber es durchsucht das aktuelle Verzeichnis unabhängig davon, ob es in %path% gelistet ist oder nicht.
Aber es ist ja auch ein "Ein-Benutzer-System".
Und das ist gut so. Ein Mehrbenutzer-System möchte ich auch nicht haben. Ich versuche nach besten Kräften, das Prinzip "1 Maschine, 1 Benutzer mit uneingeschränkten Rechten" aufrechtzuerhalten.
Gute Nacht erstmal,
Martin
Moin!
Ich versuche nach besten Kräften, das Prinzip "1 Maschine, 1 Benutzer mit uneingeschränkten Rechten" aufrechtzuerhalten.
Dann solltest Du den Rechner aber auch unter keinen Umständen vernetzen... Es reicht übrigens temporär Gott (root) zu sein, um seinem System dauerhaft zu schaden.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo fastix®.
Ich versuche nach besten Kräften, das Prinzip "1 Maschine, 1 Benutzer mit uneingeschränkten Rechten" aufrechtzuerhalten.
Dann solltest Du den Rechner aber auch unter keinen Umständen vernetzen... Es reicht übrigens temporär Gott (root) zu sein, um seinem System dauerhaft zu schaden.
Natürlich nur bei ungewissenhaftem Umgang mit dem System, wovon man bei Martin nicht ausgehen kann.
Einen schönen Sonntag noch.
Gruß, Ashura
Jau, vielen Dank für deine Erklärung, insbesondere auch die der Hintergründe in deiner Nachricht an Martin - da wäre ich so nie drauf gekommen, weil ich immer an der falschen Stelle gesucht hätte!
Die Datei "hello" wird erzeugt, und in den Eigenschaften wird der Mime-Typ "application/x-executable" aufgeführt.
Wo auch immer du diese Angabe hergeholt hast, ein ls -l ist da im Allgemeinen hilfreicher.
Sofern es dich interessiert, die Angabe stammt von Nautilus (Gnome).
Nochmals danke!
Def