C-Programme ausführen
C-Programme ausführen
Hi,
ich will C lernen und habe jetzt schon ein paar kleine Anfängerprogramme geschrieben. Ich kompiliere die immer mit gcc auf der Konsole. Wenn ich das Programm dann ausführen will muss ich immer den ganzen Pfad angeben, obwohl ich unter der Konsole in dem Pfad bin.
Ist es nicht eigentlich normal, dass man Programme, wenn man in ihrem eigentlichen Verzeichnis ist, da auch ausführen kann? Wie kann ich es einstellen, dass Programme direkt, ohne Pfadangabe ausgeführt werden?
Vielen Dank schon einmal im Vorraus
Gruß
zest
ich will C lernen und habe jetzt schon ein paar kleine Anfängerprogramme geschrieben. Ich kompiliere die immer mit gcc auf der Konsole. Wenn ich das Programm dann ausführen will muss ich immer den ganzen Pfad angeben, obwohl ich unter der Konsole in dem Pfad bin.
Ist es nicht eigentlich normal, dass man Programme, wenn man in ihrem eigentlichen Verzeichnis ist, da auch ausführen kann? Wie kann ich es einstellen, dass Programme direkt, ohne Pfadangabe ausgeführt werden?
Vielen Dank schon einmal im Vorraus
Gruß
zest
einfach geht auch.
Code: Alles auswählen
./programm
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de
xmpp:bert@debianforum.de
Doch, aber der ist nicht zu empfehlen. Du kannst den aktuellen Pfad zu der Umgebungsvariable PATH hinzufügen. Aber das wird aus Sicherheitsgründen nicht gemacht (es kann einem ein anderes Programm untergeschoben werden)
Bert
Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de
xmpp:bert@debianforum.de
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Wenn du das Programm nach /usr/local/bin kopierst funktionierts natürlich. Alternativ kannst du dort auch ein Startscript hintun:
/usr/local/bin/meinprogramm:
MfG Peschmä
/usr/local/bin/meinprogramm:
Code: Alles auswählen
#!/bin/sh
/home/derUser/programme/meinprogramm/meinprogramm
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
-
- Beiträge: 17
- Registriert: 08.08.2004 14:15:29
Hallo,..
habe ich das richtig verstanden, Du schreibst ein Programm, speicherst es ab in Deinem Verzeichnis, z.B. /Franknborder/C_Programme/test.cpp.
Bist mit Deinem Terminal in genau diesem Verzeichnis und Du kannst nicht mit
g++ test.cpp -o test dein Programm kompilieren, sondern müsstest dann
den kompletten Pfad nochmals eingeben ? Schreib mal bitte was Du da eingibst um zu kompilieren....wenn du im Verzeichnis "bist", solltest Du darin auch nicht mehr den kompletten Pfad angeben müssen, das wäre ja hirnrissig ! Hier schau mal
http://wwwuser.gwdg.de/~kboehm/ebook/inhalt.html
nur zum reinschnuppern, die Codes sind für einen Beginner zu schwer, und schau hier http://www.c-plusplus.de . Ich hoffe es hilft Dir weiter.
Gruß
Franknborder

habe ich das richtig verstanden, Du schreibst ein Programm, speicherst es ab in Deinem Verzeichnis, z.B. /Franknborder/C_Programme/test.cpp.
Bist mit Deinem Terminal in genau diesem Verzeichnis und Du kannst nicht mit
g++ test.cpp -o test dein Programm kompilieren, sondern müsstest dann
den kompletten Pfad nochmals eingeben ? Schreib mal bitte was Du da eingibst um zu kompilieren....wenn du im Verzeichnis "bist", solltest Du darin auch nicht mehr den kompletten Pfad angeben müssen, das wäre ja hirnrissig ! Hier schau mal
http://wwwuser.gwdg.de/~kboehm/ebook/inhalt.html
nur zum reinschnuppern, die Codes sind für einen Beginner zu schwer, und schau hier http://www.c-plusplus.de . Ich hoffe es hilft Dir weiter.
Gruß
Franknborder
Das ist nicht hirnrissig, man muss Unix sagen, dass man die Datei im aktuellen Verzeichnis meint. Das aktuelle Verzeichnis kann man jedoch immer mit "." beschreiben, so dass ein "./programm" immer reicht. Man kann - wie schon erwähnt, mittels "PATH=$PATH:." das aktuelle Verzeichnis standardmäßig auch durchsuchen lassen (SuSE macht das z.B.), ist aber nicht zu empfehlen.Franknborder hat geschrieben:Schreib mal bitte was Du da eingibst um zu kompilieren....wenn du im Verzeichnis "bist", solltest Du darin auch nicht mehr den kompletten Pfad angeben müssen, das wäre ja hirnrissig !
Man denke nur an die möglichkeit, dass jemand ein skript mit dem inhalt "rm -rf ~" in den Homeverzeichnis unter dem Namen "ls" packt. (Natürlich wird meistens das aktuelle Verzeichnis als letztes durchsucht, in diesem Fall würde es also nicht ausgeführt. Besser ist es, das Programm "sl" zu nennen, dann wird es ausgeführt, wenn sich der Benutzer vertippt.)
Es gibt übrigens ein Programm namens test, wenn man sein Programm auch so nennt, sollte man immer "./test" schreiben, da ansonsten das andere ausgeführt würde.
-
- Beiträge: 17
- Registriert: 08.08.2004 14:15:29
Hallo,...
wie Du sicher an der Zahl meiner Beiträge erkennen kannst bin ich Neewb wie man so schön sagt, zumindest was Linux betrifft, also ich habe meine in C /C++ geschriebenen Programme (Tutor Übungen), in einem eigenen Ordner gespeichert.
Wenn ich nun ein Terminal öffne, mich dann in mein Verzeichnis begebe z.B. cd/eigene/C_Progs, dann kann ich jedes Programm von da aus auch ausführen (Suse 9.0) ich bekomme die Tage Debian Sid. Wenn ich ein Programm editiere, mach ich mit Kate, dann speicher ich das auch im besagten Verzeichnis. Öffne ich jetzt ein Terminal, egal ob in Kate oder einer X beliebigen anderen "Stelle", editiere ich mich wieder ins besagte Verzeichnis also z.B. cd/eigene/C_Progs und kann dann z.B mit g++ -Wall -ggdb -Test.cpp -o Test (es könnte auch Textadventure.cpp heissen oder egal.cpp) und das Teil ist kompiliert ! Ausführen tu ich das Programm natürlich mit ./Test, bzw. dem Objektnamen dem ich dem Programm zugewiesen habe -o wieauchimmer.
Ich hatte das ganze jetzt so verstanden das wenn Zest im besagtenVerzeichnis ist, er den kompletten Pfad mit in den Compilierungsaufruf mit einbauen muss ! Korrigiere mich wenn dem nicht so ist, deshalb fragte ich auch ob ich das ganze richtig Verstanden habe. Deine Bedenken kann ich verstehen auch wenn ich nicht genau weiß auf was der rm (remove?) Befehl abzielt, wie gesagt Neewb, eben, ansonsten könnte es natürlich verheerend sein, wenn ich einen Makro definiere bzw. hier in Linux einen alias definiere, den fest abspeichere und auf evtl Tippfehler spekuliere, oder wie auch immer,.....Ich muss mich selbst erst mal durch den ganzen Wust arbeiten, Du scheinst ja kein Anfänger mehr zu sein,....wollte eben wissen wie genau das gemeint war....ich denke Du hast verstanden was ich meinte....
Gruß
Franknborder
wie Du sicher an der Zahl meiner Beiträge erkennen kannst bin ich Neewb wie man so schön sagt, zumindest was Linux betrifft, also ich habe meine in C /C++ geschriebenen Programme (Tutor Übungen), in einem eigenen Ordner gespeichert.
Wenn ich nun ein Terminal öffne, mich dann in mein Verzeichnis begebe z.B. cd/eigene/C_Progs, dann kann ich jedes Programm von da aus auch ausführen (Suse 9.0) ich bekomme die Tage Debian Sid. Wenn ich ein Programm editiere, mach ich mit Kate, dann speicher ich das auch im besagten Verzeichnis. Öffne ich jetzt ein Terminal, egal ob in Kate oder einer X beliebigen anderen "Stelle", editiere ich mich wieder ins besagte Verzeichnis also z.B. cd/eigene/C_Progs und kann dann z.B mit g++ -Wall -ggdb -Test.cpp -o Test (es könnte auch Textadventure.cpp heissen oder egal.cpp) und das Teil ist kompiliert ! Ausführen tu ich das Programm natürlich mit ./Test, bzw. dem Objektnamen dem ich dem Programm zugewiesen habe -o wieauchimmer.
Ich hatte das ganze jetzt so verstanden das wenn Zest im besagtenVerzeichnis ist, er den kompletten Pfad mit in den Compilierungsaufruf mit einbauen muss ! Korrigiere mich wenn dem nicht so ist, deshalb fragte ich auch ob ich das ganze richtig Verstanden habe. Deine Bedenken kann ich verstehen auch wenn ich nicht genau weiß auf was der rm (remove?) Befehl abzielt, wie gesagt Neewb, eben, ansonsten könnte es natürlich verheerend sein, wenn ich einen Makro definiere bzw. hier in Linux einen alias definiere, den fest abspeichere und auf evtl Tippfehler spekuliere, oder wie auch immer,.....Ich muss mich selbst erst mal durch den ganzen Wust arbeiten, Du scheinst ja kein Anfänger mehr zu sein,....wollte eben wissen wie genau das gemeint war....ich denke Du hast verstanden was ich meinte....
Gruß
Franknborder
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Er wollte nur wissen, wie er das kompilierte Programm dann ausführen kann..
daher "./programm"
zu dem Befehl
"rm -rf ~"
wenn es jemand schafft z.B. den Befehl "Kate" auf ein Shell-Script, in dem das obige steht, umzulenken, dann heißt das, dass du quasi den Befehl gibst
rm (lösche)
-r (rekursiv.. also angegebenes Verzeichnis + alle Unterverzeichnisse)
-f (force.. also ohne nachzufragen und auf jeden Fall)
~ (Synonym für dein Home-Directory)
also in Kurzform: lösche alles in meinem Home-Directory ohne nochmal nachzufragen
daher "./programm"
zu dem Befehl
"rm -rf ~"
wenn es jemand schafft z.B. den Befehl "Kate" auf ein Shell-Script, in dem das obige steht, umzulenken, dann heißt das, dass du quasi den Befehl gibst
rm (lösche)
-r (rekursiv.. also angegebenes Verzeichnis + alle Unterverzeichnisse)
-f (force.. also ohne nachzufragen und auf jeden Fall)
~ (Synonym für dein Home-Directory)
also in Kurzform: lösche alles in meinem Home-Directory ohne nochmal nachzufragen
-
- Beiträge: 17
- Registriert: 08.08.2004 14:15:29
Rehi,...
oki....erst mal danke für die Aufklärung...Japp, selbstverständlich führt man das Prog mit ./Prog aus, manche ausführbare Dateien kannst Du ja auch einfach anklicken, vgl. Exe Datei Win...weiß jetzt zwar "noch" nicht genau wie ich die fertig compilierten ausführbaren Dateien, mit einem Skript ??, oder wie auch immer dazu bewege das zu tun, ist aber nicht schlimm, gut Ding hat bekanntlich Weile. Erst mal Sid drauf machen die Tage, da werde ich Euch bestimmt genug löchern...
Das mit den Befehlen "umlenken" ist ja mal ne Nette Idee ! ...Ich bin sicher das geht, sind ja im Prinzip auch "aliase" die ein Programm aufrufen. Das könnte natürlich ganz böse Folgen haben, sicher !
thx
und
Gruß
Franknborder
oki....erst mal danke für die Aufklärung...Japp, selbstverständlich führt man das Prog mit ./Prog aus, manche ausführbare Dateien kannst Du ja auch einfach anklicken, vgl. Exe Datei Win...weiß jetzt zwar "noch" nicht genau wie ich die fertig compilierten ausführbaren Dateien, mit einem Skript ??, oder wie auch immer dazu bewege das zu tun, ist aber nicht schlimm, gut Ding hat bekanntlich Weile. Erst mal Sid drauf machen die Tage, da werde ich Euch bestimmt genug löchern...

thx
und
Gruß
Franknborder