GCC & Raspberry: Programmaufruf

Gast #5331318
Lesenswert?

Das Programm unten habe ich auf einem Raspberry (OS Raspbian) direkt im 
Terminal eingeben und kompiliert. Funktioniert.

Obwohl ich im Verzeichnis /tmp bin, kann ich das Programm nur mit 
./hello aufrufen, mit hello allein geht es nicht.

So steht such im Wiki:

http://linuxwiki.de/ProgrammeStarten

Was ist der (tiefere) Grund?
1
cd /tmp
2
cat <<EOF > main.c
3
#include <stdio.h>
4

5
int main() {
6
    printf("Hello World\n");
7
    return 0;
8
}
9
EOF
10
gcc -o hello main.c
11
./hello # Press Enter to execute your program
#5331332
Lesenswert?

Die Shell schaut in allen Ordnern nach, die in der PATH Variable 
gelistet sind. Dein jeweils aktueller Ordner ist es nicht. Der aktuelle 
Ordner lässt sich durch den Punkt "." ansprechen (wie z.B. zei Punkte 
".." den übergeordneten Ordner bezeichnen).

Siehe:
echo $PATH

Du kannst den aktuellen Ordner mit in die PATH Variable aufnehmen
PATH=${PATH}:.

dann sollte der Aufruf auch ohne ./ gehen.

Gerhard
#5331371
Lesenswert?

Gerhard Z. schrieb:
> Die Shell schaut in allen Ordnern nach, die in der PATH Variable
> gelistet sind. Dein jeweils aktueller Ordner ist es nicht.

Und das hat einen guten Grund. Mit '.' im $PATH kann man viel 
Schindluder treiben, wenn man z.B. im $home ein eigenes "ls" als Binary 
hat.

Das ist eine dicke Sicherheitslücke. Man sollte sich lieber das 
./programmname angewöhnen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren