Nur mal so zur Aufklärung:
Der erste Befehl macht die Datei ausführbar. Unix unterscheidet zwischen einfachen Daten und ausführbaren Programmen. Die Dateiattribute sind:
r - read, lesbar
w - write, änderbar
x - eXecute, ausführbar
d - directory, Verzeichnis
(und noch andere, die sparen wir uns)
und das jeweils für Besitzer, Gruppe, Jedermann, eine volle Berechtigung wird im Terminal also mit:
rwx rwx rwx programmname
angezeigt. chmod (change modus) ändert die Dateiattribute, entweder durch setzen der entsprechenden Attribute mit +r oder -x, oder durch Verwendung von Binärlogik:
user@mac:/ $ cd test
Wechsel in’s Verzeichnis test
user@mac:/test $ ls
Inhalt von test anzeigen
(leer)
user@mac:/test $ touch programname
Erzeuge leere Dummy-Datei mit dem Namen „programname“
user@mac:/test $ ls -l
Liste Inhalt von aktuellem Verzeichnis (test) in Langform
total 0
-rw-r–r-- 1 user admin 0 1 Dez 13:21 programname
Die neu angelegt Datei hat also die Rechte/Attribute: lesen/schreiben von Besitzer, lesen von Gruppe, lesen von Jedermann
user@mac:/test $ chmod +x programname
Ändere auf Ausführbar
user@mac:/test $ ls -l
total 0
-rwxr-xr-x 1 user admin 0 1 Dez 13:21 programname
ein x überall dazu, also darf nu jeder die Datei auch ausführen.
user@mac:/test $ chmod 744 programname
Kurzschreibweise 744 siehe unten.
user@mac:/test $ ls -l
total 0
-rwxr–r-- 1 user admin 0 1 Dez 13:21 programname
Wobei 744 = 111 100 100 zu lesen ist und jeweils angibt, ob eine Berechtigung existiert (1) oder nicht (0).
744 = rwx r-- r–
700 = rwx — ---
444 = r-- r-- r–
174 = --x rwx r–
usw.
Der Befehl ./programname startet das Programm mit dem Namen programname im aktuellen Verzeichnis. die Eingabe von nur programname funktioniert auch, aber nur, wenn das Programm in einem der Suchpfade liegt.
user@mac:/test $ echo $PATH
/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/opt/local/bin:/opt/local/sbin
Also nur, wenn es in einem der unter der Variable PATH definierten Verzeichnisse liegt. Deshalb braucht man z.B. für Befehle wie ls oder cd nicht angeben, wo die liegen:
user@mac:/test $ which ls
/bin/ls
und /bin liegt im Suchpfad.
Und ja, ich mag Unix… 